我有三个快速的问题,我看到了相互矛盾的答案,希望有人可以清理.
从Objective-C开始,我几乎认为是第一个是,而第二个是否,但是我希望保存一些输入:)
谢谢,
只是为了向我前面的三个回复添加一点:
是的,它确实.在实践中NSObject(可能)不需要它(现在),但是如果你改变了,那么如果你没有,你就会被搞砸.不管怎样,最好养成习惯(或者使用XCode中的代码生成来删除init模板).那说你并不总是init打电话(更快).
正如已经指出的那样,初始化为默认值(由于memcpy 0s,所以0,nil等)是有保证的,并且依赖于它是合理的惯用语.有些人仍然喜欢明确,这很好.
绝对.记住init,或任何变化只是一种常规方法.按惯例,它只是一个初始化者(虽然是一个非常强大的惯例).您可以自由地调用其他方法,包括其他初始化程序.同样,按照惯例,您应该决定" 指定的初始化程序 "并让所有其他初始化程序调用它.想想这与你的第一个问题有关.如果你是子类,你的子类会调用什么?默认情况下,子类作者会调用你的init- 所以如果你有一个不同的指定初始值设定项,那么你要明确这一点是非常重要的,所以子类作者知道要调用它.
您可以在Apple文档中阅读更多(权威)详细信息.
| 归档时间: |
|
| 查看次数: |
497 次 |
| 最近记录: |