nil是初始化程序中允许的唯一返回值吗?

13 ios uicollectionview swift

我正在尝试子类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")
    }
}
Run Code Online (Sandbox Code Playgroud)

Yun*_*hel 4

正如 @jtbandes 在评论中提到的,你不应该打电话给return self. Swift 书中指出:

与 Objective-C 初始化器不同,Swift 初始化器不返回值。

(这不适用于可失败的初始化程序