NSObject init方法是否可以执行任何操作?

Tim*_*len 5 initialization objective-c nsobject

self = [super init];在继承NSObject的同时编写自定义初始化方法是否有意义?我知道在继承任何其他类时,它是必要的,因为它可能有自定义初始化,但NSObject init方法是否做了什么?

Dru*_*erB 9

在初始化对象之前,尚未准备好使用该对象.该类中init定义的方法NSObject不进行初始化; 它只是回归自我.

所以基本上你不必调用[super init]NSObject子类,但我还是会推荐它.这只是一个更好的设计.如果更改超类,它仍然可以工作.

来源:NSObject类参考.

  • +"我仍然会推荐它" - NSObject实现可以改变,你可以改变你的类的超类等.推断它的超类的行为不是你的类的工作. (5认同)
  • 不,真的,你的代码是错误的**如果你不是'self = [super init ...];`."NSObject"的实现是什么并不重要; 始终如一地使用该模式以最大限度地减少脆弱性,并且因为遵循记录的正确模式会导致更易维护的应用程 (4认同)