swift - 为什么 Swift 1.2 破坏了 UIDynamicAnimator 的 init(collectionViewLayout :)?

标签 swift

在 Swift 1.1 及之前的版本中,这是合法的:

let layout = UICollectionViewLayout()
class MyDynamicAnimator : UIDynamicAnimator {}
let anim2 = MyDynamicAnimator(collectionViewLayout:layout)

在 Swift 1.2 中,它拒绝编译。为什么?

我可以通过覆盖 init(collectionViewLayout:) 来解决这个问题,只调用 super:

class MyDynamicAnimator : UIDynamicAnimator {
    override init(collectionViewLayout:UICollectionViewLayout) {
        super.init(collectionViewLayout:collectionViewLayout)
    }
}

但这似乎有点疯狂。如果我可以覆盖它,为什么我不能直接继承它?

注意:我猜测这个问题的原因可能是 UIDynamicAnimator 的 init(collectionViewLayout:) 是声明的指定初始化程序在扩展中,根据 Swift,这是非法的。但根据 Cocoa 的说法,这并不违法,所以它肯定仍然需要继承!这种破坏对我来说就像是一个错误......作为程序员,我不应该被 API 头结构中恰好声明初始化程序的技术细节所困扰。

[编辑:我已就此向 Apple 提交错误报告,但未收到任何回复。这种情况对我来说仍然是莫名其妙的。我也不认为这与 extension 有任何关系。这似乎是错误的。]

最佳答案

这是一个错误,事实证明它已在 Xcode 7/iOS 9 中修复。

关于swift - 为什么 Swift 1.2 破坏了 UIDynamicAnimator 的 init(collectionViewLayout :)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29632050/

相关文章:

ios - Realm 是否支持模型版本?

ios - 创建具有纹理形状的物理体会导致 Swift 2.0 中的碰撞冲突

swift - Twitter 回调 URL

ios - 检测 Swift 中按钮的点击

swift - 在 CentOS 上构建 Swift

ios - CALayer 圆形蒙版动画不正确的行为 + Swift

Objective-C - 现有代码库的 Swift 桥接性能

swift - 使用 async 和 wait 从错误的线程访问 Realm

ios - 高度约束动画 'jumping'

ios - Apple 无法识别 imgur 的 HTTPS