Objective-C中的对象声明

时间:2010-06-10 05:42:25

标签: objective-c object declaration

除了风格和个人偏好之外,在(1)和(2)之间在Objective-C中声明对象有什么不同吗?

(1)单行声明,分配,初始化。

Student *myStudent = [[Student alloc] init];

(2)多行声明,分配,初始化。

Student *myStudent;
myStudent = [Student alloc]; 
myStudent = [myStudent init];

3 个答案:

答案 0 :(得分:4)

不,没有区别。 [Student alloc]只为指针分配内存,同时[myStudent init]实际上设置了初始值。

如果您熟悉C,请将alloc视为

Student *myStudent = calloc(1, sizeof(Student));

并将init调用作为设置初始值的函数。

答案 1 :(得分:2)

在第二种情况下,您可以多次初始化同一个对象。您向类发送alloc消息以获取未初始化的实例,然后必须初始化,有多种方法可以执行此操作:

NSString *myStr = [NSString alloc];
NSString *str1 = [myStr init]; //Empty string
NSString *str2 = [myStr initWithFormat:@"%@.%@", parentKeyPath, key];

答案 2 :(得分:2)

不,没有区别。