gpt4 book ai didi

ios - 在 Swift 中子类化 NSObject - 初始化器的最佳实践

转载 作者:IT王子 更新时间:2023-10-29 05:02:42 24 4
gpt4 key购买 nike

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

class MyClass: NSObject {

var someProperty: NSString! = nil

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

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

}

这是否正确,我是否遵循了这里的最佳实践?

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

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

我的更特定(接受字符串的)初始化程序是否应该在末尾简单地调用 self.init() 而不是 super.init() ?

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

这个问题(虽然是在 Objective C 中)建议你应该有一个 init,你总是调用它并简单地在更具体的 init 中设置属性:Objective-C Multiple Initialisers

最佳答案

我不是 Swift 专家,但我会把 MyClass 写成:

class MyClass: NSObject {

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

init(fromString string: NSString) {
self.someProperty = string
super.init() // can actually be omitted in this example because will happen automatically.
}

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

参见 initialization section of the documentation

关于ios - 在 Swift 中子类化 NSObject - 初始化器的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25343330/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com