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

Objective c ObjC为什么在分别实现[alloc]和[init]方法时不正确?,objective-c,init,alloc,Objective C,Init,Alloc,在未重新分配指向该对象的任何指针的情况下,切勿初始化该对象。例如,不要这样做: NSObject *someObject = [NSObject alloc]; [someObject init]; 如果对init的调用返回一些其他对象,则会留下一个指向最初分配但从未初始化的对象的指针 实际上,这是苹果ObjC文档中的一个例子,但我不太清楚,也就是说,为什么NSObject*someObject=[[NSObject alloc]init]可以承诺返回我们刚刚需要的对象,而NSObject*s

在未重新分配指向该对象的任何指针的情况下,切勿初始化该对象。例如,不要这样做:

NSObject *someObject = [NSObject alloc];
[someObject init];
如果对init的调用返回一些其他对象,则会留下一个指向最初分配但从未初始化的对象的指针


实际上,这是苹果ObjC文档中的一个例子,但我不太清楚,也就是说,为什么
NSObject*someObject=[[NSObject alloc]init]
可以承诺返回我们刚刚需要的对象,而
NSObject*someObject=[NSObject alloc];[someobjectinit]不能?

仅仅因为-init可以返回与someObject不同的内容。在您的示例中,必须将指针重新分配给-init的结果

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

每当我需要进行[[..alloc]init]时,我更喜欢[..new]。节省键入,代码看起来更小。如果你需要。。。那么就没有其他选项了。恩,[…alloc]init]相当于[…new],如果您只需要一个init only对象,它会将实例变量值设置为0(如果有)。每当我需要执行[…alloc]init时,我更喜欢[…new]。节省键入,代码看起来更小。如果你需要。。。那么就没有其他选项了。如果您只需要一个init only对象,[…alloc]init]相当于[…new],如果有实例变量值,它会将实例变量值设置为0。但是它何时以及如何返回与someObject不同的值呢?在alloc-init分离的版本中,如何重新分配指向-init结果的指针?我已经知道了这个问题的答案,这是一个多么愚蠢的问题…但是它何时以及如何返回与某个对象不同的东西?如何在alloc-init分离版本中重新分配指向-init结果的指针?我已经知道了这个问题的答案,多么愚蠢的问题。。。