【发布时间】:2012-11-09 02:42:46
【问题描述】:
在未重新分配指向该对象的任何指针的情况下,切勿初始化对象。例如,不要这样做:
NSObject *someObject = [NSObject alloc];
[someObject init];
如果对 init 的调用返回一些其他对象,您将得到一个指向最初分配但从未初始化的对象的指针。
其实这是Apple的ObjC文档中的一个例子,不过我不太清楚,就是为什么NSObject *someObject = [[NSObject alloc] init]可以承诺返回我们刚需要的对象,而NSObject *someObject = [NSObject alloc]; [someObject init];不能?
【问题讨论】:
-
每当我需要做 [[.... alloc]init] 时,我更喜欢 [... new]。节省打字和代码看起来更小。如果你需要做 initWith... 那就别无选择了。
-
zh, [[... alloc] init] 等价于 [... new],如果您只需要一个 init-only 对象,它将实例变量值设置为 0,如果有任何。
标签: objective-c init alloc