在Swift中对NSObject进行子类化 - 使用初始化器进行最佳实践

Woo*_*ock 36 initialization subclass nsobject ios swift

这是一个示例类的布局,有人可以指导我在创建NSObject的子类时的最佳实践吗?

class MyClass: NSObject {

    var someProperty: NSString! = nil

    override init() {
        self.someProperty = "John"
        super.init()
    }

    init(fromString string: NSString) {
        self.someProperty = string
        super.init()
    }

}
Run Code Online (Sandbox Code Playgroud)

这是正确的,我在这里遵循最佳做法吗?

我想知道我是否正确设置了初始化器(一个将字符串设置为默认值,一个我可以传入一个字符串)?

我应该super.init()在每个初始化器的末尾调用吗?

我的更具体(带字符串的那个)初始化器是否应该self.init()在最后调用而不是super.init()

在子类化时,在Swift中设置初始值设定项的正确方法是什么NSObject? - 我该如何调用super init?

这个问题(尽管在目标C中)建议你应该有一个init,你总是调用它,只需在更具体的内容中设置属性:Objective-C Multiple Initialisers

Max*_*tin 54

我不是斯威夫特忍者,但我会写作MyClass:

class MyClass: NSObject {

    var someProperty: NSString // no need (!). It will be initialised from controller 

    init(fromString string: NSString) {
        self.someProperty = string
        super.init()
    }

    convenience override init() {
        self.init(fromString:"John") // calls above mentioned controller with default name
    }        
}
Run Code Online (Sandbox Code Playgroud)

请参阅文档初始化部分