缺少初始化的后果?

Mon*_*olo 4 cocoa cocoa-touch objective-c init nsobject

在将一个编码非常糟糕的iOS项目移植到OS X的过程中,我在其中保留了模型层,以便(稍后)能够保持两个版本同步.

我目前无权更改iOS代码库 - 也不特别想要.此外,对于所有故障,模型层都经过测试和工作.

他们说,如果没有破产,就不要修理它.所以我想我的问题是,下面的代码破坏或没有?注意,init之后没有调用alloc,并且实例化的类是直接子类NSObject.

...
SuspectClass *obj = [SuspectClass alloc];
obj.arrayProperty = [NSArray arrayWith...];

// etc.
...
Run Code Online (Sandbox Code Playgroud)

我想另一个办法把问题是,如果NSObjectinit实际上增加了什么对象?

Phi*_*lls 6

initNSObject 的文档中可以得到官方的答案:"在初始化对象之前,它还没有准备好使用."

...和实际答案:"NSObject类中定义的init方法不进行初始化;它只返回self."

:-)

虽然有功能,但我不认为我会相信一个裸露alloc的地方,因为有许多地方警告某些形式init是必需的.

  • +1代码现在可以正常工作,因为NSObject的init**当前**什么都不做,因为它自己的init**目前**什么都不做,而且****目前**直接从NSObject继承.将来有三件事情可能会改变,这将破坏代码,其中一件只有Apple可以控制. (4认同)