A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 碧空海 中级黑马   /  2015-3-18 13:49  /  665 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Person *p = [Person new];
A.句子解析;
1.完整的创建了一个可用对象
2.分配存储空间,用的是内部的类方法+alloc
3.初始化,用的是对象方法。-init

B.过程剖析
1.首先调用+alloc类方法分配空间,Person *p1 = [Person alloc];
2.接下来用-init初始化;Person *p= [p1 init];

C.以后创建类对象就用这样的
Person *p = [[Person alloc] init];代替Person *p = [Person new];
alloc用于分配空间。init用于初始化

D.在实现中(@implemention 类名)重写-init方法。
-        (id)init
{
//一定要调用super的init方法:初始化父类声明中的一些成员变量和其他属性。
//[super init];(会直接调用父类) 初始化当前对象 用的就是self(有的时候也不相同)。
//具体可以这样写;
Self = [super init];
If (self != nil)
{
//初始化成功进入
_age = 10;
}
//返回一个已经初始化的对象
return self;
}
整体可以这样简写;
-        (id)init
{
If ( self = [super init] )
{
-age = 10;
}
return  self;
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马