在将一个编码非常糟糕的iOS项目移植到OS X的过程中,我在其中保留了模型层,以便(稍后)能够保持两个版本同步。
我目前无权更改iOS代码库 - 也不特别想要。此外,对于它的所有故障,模型层都经过测试和工作。
如果没有破产,请不要修理,他们说。所以我想我的问题是, 下面的代码是否破坏了?请注意,在init
之后没有调用alloc
,并且实例化的类是NSObject
的直接子类。
...
SuspectClass *obj = [SuspectClass alloc];
obj.arrayProperty = [NSArray arrayWith...];
// etc.
...
我想另一种提出问题的方法是,NSObject
的{{1}}实际上是否会向对象添加任何内容?
答案 0 :(得分:6)
从NSObject中init
的文档中得出正式答案:“在初始化对象之前,它还没有准备好使用。”
...和实际答案:“NSObject类中定义的init方法不进行初始化;它只返回self。”
: - )
虽然功能正常,但我不认为我会相信裸alloc
,因为警告某些形式的init
是必需的。
答案 1 :(得分:0)
没有init,你会在未定义的状态下得到一个“对象”(至少有足够的内存空间用于'对象')。你无法知道你的记忆中发生了什么,所以init是必须的