【发布时间】:2010-10-17 17:16:21
【问题描述】:
学习Objective-C并阅读示例代码,我注意到对象通常是使用这种方法创建的:
SomeObject *myObject = [[SomeObject alloc] init];
代替:
SomeObject *myObject = [SomeObject new];
这是有原因的吗,因为我已经读到它们是等效的?
【问题讨论】:
-
我什至不知道这是可能的!我读过的所有材料都假装新关键字不存在!
-
其实“new”在Objective-C中并不是关键字,而是NSObject实现了一个类方法“new”,它简单地调用了“alloc”和“init”。
-
乔纳森,这正是我提出问题的原因。它们在功能上可能是等效的,但 [[alloc] init] 显然是主要的习惯用法。
-
我认为 Apple(我从他们的 iTunes 斯坦福讲座中记得)只是鼓励您使用 alloc init 来代替,以便您了解正在发生的事情的过程。他们在示例代码中也没有大量使用 new,因此 alloc init 似乎只是 Apple 试图推广的一个普遍的好习惯。
标签: objective-c oop