永远不要在不重新指定任何指向该对象的指针的情况下初始化对象。例如,不要这样做:
NSObject *someObject = [NSObject alloc];
[someObject init];
如果对init的调用返回了一些其他对象,那么你将留下一个指向最初分配但从未初始化的对象的指针。
实际上,这是Apple的ObjC文档中的一个示例,但我对此并不十分清楚,也就是说,为什么NSObject *someObject = [[NSObject alloc] init]
可以保证返回我们刚才需要的对象,而NSObject *someObject = [NSObject alloc]; [someObject init];
则不能?
答案 0 :(得分:3)
只是因为-init可以返回与someObject不同的东西。在您的示例中,您必须将指针重新指定给-init的结果。