您的位置:首页 > 其它

OC-对象初始化问题

2016-07-03 21:05 267 查看
OC中对象的初始化包含两个方面:
(1)给对象的内存空间中储存的实例变量赋初值;
(2)给指针赋初值,使得指针指向对象。

下面用例子来说明:

Person *XiaoMing;//此时XiaoMing这个指针是nil,还未被初始化

XiaoMing=[[Personalloc]initWithName:@"Xiao
Ming"Age:18Sex:maleHeight:172.0Weight:53.0];

-(id)initWithName:(NSString *)n Age:(int)a Sex:(Sex)s Height:(float)h
Weight:(float)w 

{

    if (self=[super init]) {

        name=n;

        age=a;

        sex=s;

        height=h;

        weight=w;

    }

    return self;

}

这个语句同时完成了对象实例变量的初始化和指针的初始化,下面来看这个语句的具体操作流程:

1.[Person alloc]就是在堆上分配一段内存空间用于储存Person类的实例对象,也就是说这里创建了一个Person类的实例对象;

2.initWithName:@"Xiao
Ming" Age:18 Sex:male Height:172.0 Weight:53.0在完成对象实例变量初始化的同时,返回一个self指针,此时的self指针是指向Person类的实例对象,然后将self指针赋给XiaoMing指针,所以XiaoMing指针也指向Person类的实例对象。

*注:oc中的指针有两层含义,既代表指针本身又代表指针的引用,也就是说当它是指针(地址)本身的时候,它是指向对象的,当它是指针引用的时候,它就代表对象本身,这是跟c语音不一样的,在c中指针的引用要在指针前面加一个“*”号。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: