缺少初始化的后果?

时间:2012-05-01 13:20:31

标签: objective-c cocoa-touch cocoa init nsobject

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

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

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

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

// etc.
...

我想另一种提出问题的方法是,NSObject的{​​{1}}实际上是否会向对象添加任何内容?

2 个答案:

答案 0 :(得分:6)

从NSObject中init的文档中得出正式答案:“在初始化对象之前,它还没有准备好使用。”

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

: - )

虽然功能正常,但我不认为我会相信裸alloc,因为警告某些形式的init是必需的。

答案 1 :(得分:0)

没有init,你会在未定义的状态下得到一个“对象”(至少有足够的内存空间用于'对象')。你无法知道你的记忆中发生了什么,所以init是必须的