在将一个编码非常糟糕的 iOS 项目移植到 OS X 的过程中,我特别注意保留模型层,以便(以后)能够使两个版本保持同步。
我目前无权更改 iOS 代码库 - 也不是特别想这样做。此外,对于所有的错误,模型层已经过测试并且可以正常工作。
他们说,如果它没坏就不要修理它。所以我想我的问题是,下面的代码是坏了吗?请注意,在 alloc
之后没有调用 init
,并且被实例化的类是 NSObject
的直接子类。
...
SuspectClass *obj = [SuspectClass alloc];
obj.arrayProperty = [NSArray arrayWith...];
// etc.
...
我想另一种提出问题的方式是 NSObject
的 init
是否真的向对象添加了任何东西?
最佳答案
从 NSObject 的 init
文档中可以得到官方的回答:“一个对象只有在初始化后才能使用。”
...实际答案是:“NSObject 类中定义的 init 方法不进行初始化;它只是返回自身。”
:-)
尽管功能正常,但考虑到需要某种形式的 init
的警告位置的数量,我认为我不会相信裸露的 alloc
。
关于objective-c - 缺少 init 的后果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10398252/