黑马程序员技术交流社区

标题: 关于OC中初始化的一些思考 [打印本页]

作者: L503254118    时间: 2015-10-16 07:44
标题: 关于OC中初始化的一些思考
先看一简单程序。
@interface Dog:NSObject
{
    int age;
}
-(void) setAge:(int *)newAge;
-(int) age;
@end;
//实现
@implementation Dog

-(void) setAge:(int *)newAge
{
    age=newAge;
}
-(int) age;
{
return age;
}
@end;

在main函数中,我们要实例化一个对象,然后调用set函数设置年龄。
第一句:Dog *dog=[[Don alloc] init];  
第二句:[dog setAge:5];
第一句,我们一般理解为,给对象分配空间并初始化(init),除指针外均置0 。age=0;
但第二句,同样也是在给dog这个对象的实例变量赋值,或者称为初始化,age=5。既然,我们在第二句的赋值对我们来讲是有意义的,那为什么还要在第一句里init置0呢,是否可以理解为多此一举。
换句话说,第一句只分配空间不就好嘛。Dog *dog=[Don alloc]; 接着,[dog setAge:5];
作为初学者,这个不能理解,希望多给指导。







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2