ObjC-分别实现[alloc]和[init]方法时为什么不正确?

时间:2012-11-09 02:42:46

标签: objective-c init alloc

永远不要在不重新指定任何指向该对象的指针的情况下初始化对象。例如,不要这样做:

NSObject *someObject = [NSObject alloc];
[someObject init];

如果对init的调用返回了一些其他对象,那么你将留下一个指向最初分配但从未初始化的对象的指针。

实际上,这是Apple的ObjC文档中的一个示例,但我对此并不十分清楚,也就是说,为什么NSObject *someObject = [[NSObject alloc] init]可以保证返回我们刚才需要的对象,而NSObject *someObject = [NSObject alloc]; [someObject init];则不能?

1 个答案:

答案 0 :(得分:3)

只是因为-init可以返回与someObject不同的东西。在您的示例中,您必须将指针重新指定给-init的结果。