更新记录
初始化对象
- 一般使用alloc分配内存,Objective-C中的alloc方法将这片内存全部初始化为0
- OC中的对象必须先初始化才能使用(调用OC中的init或者initwithxxx函数)
- 一般的对象需要分配内存和初始化后才能使用,C++和Java中都是在构造函数的一次操作中便完成上述操作。而OBjective-C中是分开两个操作
- Objective-C中最好使用嵌套方式初始化对象,如
Car *car = [[Car alloc] init];
- 初始化方法返回的对象可能与分配的对象不同
- 像NSString或者NSArray这样类,可能内部是类簇的实现。在调用带参数的init函数时,内部可能会返回另外一个类的对象,导致init返回的对象和alloc返回的对象是不同的。
编写初始化方法
(id) init {
if (self = [super init]) {
//do something to init
}
return self;
}
- 调用基类的init代码,可以让基类完成自身的初始化工作
- 如上所述,init方法返回的对象可能和alloc方法返回的不同。因此这里要更新self的值
- 查找实例变量时,是通过self及固定的偏移距离来寻找内存位置的。因此self的值非常重要,不能出错。
参考资料
- 《Objective-C基础教程》第2版 10.1 对象初始化