黑马程序员技术交流社区

标题: 构造方法包括哪几部分? [打印本页]

作者: 中国人    时间: 2015-9-11 12:52
标题: 构造方法包括哪几部分?
构造方法具体包括哪几部分?
作者: 贺超智    时间: 2015-9-11 12:54
1.分配空间;2初始化;3.返回地址
作者: lixj1991    时间: 2015-9-11 17:53
构造方法可以用于定义函数的初始化的默认值。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;
}
作者: 张健康ios0826    时间: 2015-9-11 23:48
构造?枚举数组共用结构?
作者: bowenfei    时间: 2015-9-12 00:13
还没看到呢




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