【发布时间】:2016-07-04 19:21:55
【问题描述】:
我正在尝试对 UICollectionViewFlowLayout 进行子类化,但我收到错误消息:“nil 是初始化程序中唯一允许的返回值。”我试图检查超类是否有初始化程序,如果没有,我将返回 nil,但是,我收到另一个错误,说 self 是不可变的。
import UIKit
class CollectionViewSpringLayout: UICollectionViewFlowLayout {
var dynamicAnimator: UIDynamicAnimator?
override init() {
self.minimumInteritemSpacing = 10
self.minimumInteritemSpacing = 10
//self.itemSize = CGSizeMake(44, 44)
self.sectionInset = UIEdgeInsetsMake(10, 10, 10, 10)
self.dynamicAnimator = UIDynamicAnimator(collectionViewLayout: self)
return self
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
【问题讨论】:
-
在 Swift 中你不需要
return self。 -
天哪,我一直把 obj-c 和 swift 搞混了..
-
在 Obj-C 中
- (instancetype)init是一个方法,需要一个返回值。在 Swift 中,初始化器是特殊的,它们不是普通的函数 :) -
除了问的问题,你还缺少
super.init()
标签: ios swift uicollectionview