我是 Objective C 的新手。我很难理解 init() 方法。我在 Apple 网站上阅读了这两行:
NSObject 类中定义的 init() 方法不进行初始化;它只是返回 self 。 ( https://developer.apple.com/reference/objectivec/nsobject/1418641-init )
您必须使用 init... 方法来完成初始化过程。 ( https://developer.apple.com/reference/objectivec/nsobject/1571958-alloc )
如果“它没有初始化”,我是否需要调用 init() 来初始化对象?为什么?
最佳答案
当使用 +alloc
创建实例对象时,它会获得一个完全设置的基础结构,并且所有 ivar 都设置为 0
,NULL
、nil
、0.0
(或任何 ivar 类型的零值)。
如果这对类来说足够了,就没有必要覆盖-init
,它可以简单地使用NSObject
的init。 (NSObject
的-init
什么都不做。)这是实现者 的一面。这就是您在 1 中提到的内容)。
该类的用户(即创建实例的代码)必须将init
发送到新创建的实例以给它机会 来初始化自己。这就是你在 2 中提到的内容)。
作为该类的用户,您根本无法知道也不应该知道该类在其初始化过程中是否需要一些代码。所以发送消息,即使它可能毫无用处。
关于ios - Objective C 中是否需要 init(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43566534/