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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

中国人

初级黑马

  • 黑马币:11

  • 帖子:11

  • 精华:0

© 中国人 初级黑马   /  2015-9-11 12:52  /  849 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

构造方法具体包括哪几部分?

4 个回复

倒序浏览
1.分配空间;2初始化;3.返回地址
回复 使用道具 举报
构造方法可以用于定义函数的初始化的默认值。OC默认的构造方法是NSObject的init方法。
Person *p=[Person new];它与Person *p=[[Person alloc] init];等价
当构造方法没有实现时,编译器默认使用NSObject的init方法。
但是经常会有这样的情况,需要定义的初始化对象的属性值和OC默认的不同。
例如枪类中,如果子弹数量的类型是int,在初始化的时候就不希望子弹的数目是init方法默认的0。
这个时候就需要重写构造方法。
以有参数的构造方法为例:
- (instancetype)initWithBullet:(int)count {   
//通常对象的返回值是id类型或instancetype类型,在最近的xcode版本中,苹果推荐使用instancetype类型
if (self = [super init]) {
//self = [super init]这句话通常也是格式必须的,因为当前的类可能是继承自某一个父类,初始化的成员变量可能不是全部,因此要首先调用父类的init方法来初始化继承来的属性,当父类初始化成功,赋值的返回值也为真,if条件成立,接下来的赋值工作才能进行。
_count = count;
//此处是给对象自己独有的属性进行初始化,也可以给继承来的属性重新赋值(@public或者@protected关键字声明时)
}
return self;
//赋值完成后,返回当前对象的部分。
}
因此,构造方法的格式如下:
- (instancetype)initWith类名:传递的参数类型以及参数名 {   
if (self = [super init]) {
当前类独有的属性赋值的部分;
return self;
}
回复 使用道具 举报
构造?枚举数组共用结构?
回复 使用道具 举报
还没看到呢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马