Ios 在初始化器的实现中必须完成什么?
在初始化器的实现中必须完成什么Ios 在初始化器的实现中必须完成什么?,ios,swift,initializer,Ios,Swift,Initializer,在初始化器的实现中必须完成什么 a. All properties need to be initialized with a value b. All properties need to be explicitly assigned a value. c. All non-Optional properties need to be initialized. Sorry, that's incorrect. Optionals need to be initialized
a. All properties need to be initialized with a value
b. All properties need to be explicitly assigned a value.
c. All non-Optional properties need to be initialized.
Sorry, that's incorrect.
Optionals need to be initialized as well.
d. The object needs to be created
什么答案是正确的?为什么?在我看来,这是一个非常令人困惑的问题。因为作为开发人员,您必须做的是选项c 看看这个简单的代码示例,以及可编译的最小
init
class SomeClass {
var a : AnyObject
var b : AnyObject?
var c : AnyObject!
var d = ":)"
init() {
a = ""
print("initialized")
}
}
美国
在创建类或结构的实例时,类和结构必须将其所有存储的属性设置为适当的初始值。存储的属性不能处于不确定状态
可以在初始值设定项中为存储的属性设置初始值,也可以将默认属性值指定为属性定义的一部分。以下各节将介绍这些操作
选择d。imho无意义,因为对象创建由底层运行时环境处理,而不是通过初始值设定项
现在b。和a。保留明确指定的与初始化的在措辞上的细微差别。因此,我将放弃选项b,因为b
和c
变量不需要任何显式值,隐式nil
暂时还可以(尽管读取c
还不起作用)
因此,我的答案选择是选项a。在init方法之后,所有属性都需要有特定的值。其中一些在init函数中显式,一些隐式
tl;博士:
我的最终答案是选项a。
我认为第一个‘a’答案是正确的,对象应该初始化它的所有属性,还应该调用‘super’(应该初始化‘superclass’的所有属性)