4

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

我目前无权更改 iOS 代码库 - 也不是特别想更改。此外,对于所有的故障,模型层都经过测试并且可以正常工作。

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

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

// etc.
...

我想提出问题的另一种方式是NSObject'是否init真的向对象添加了任何东西?

4

2 回答 2

6

initin NSObject 的文档中得到了官方的回答:“一个对象在被初始化之前还没有准备好使用。”

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

:-)

alloc虽然功能齐全,但考虑到警告需要某种形式的地方的数量,我认为我不会相信裸露的init

于 2012-05-01T13:28:36.700 回答
0

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

于 2012-05-02T16:46:23.410 回答