object-c学习笔记:对象初期化
init的标准写法:
- init
{
if (self = [super init]) {
//do some thing
}
return self;
}
同上面的问题,如果使用这样的代码,是否正确呢?
Car* car = [Car alloc];
[car init];
如果按照正常的思维,因该是正确的,alloc负责分配内存,init只是初期化值而已,但是[car init]是有可能返回不同的对象的,所有必须这样写:
Car* car = [[Car aollc] init];
这个问题最常见的就是NSString这个类,如果字符串太长,或是非英语都有能使得返回其他string类,事实上NSString虽然是用户使用的唯一接口,但实际上其背后是一群类,因为object-c的动态特性,你并不需要知道你实际用的是哪个类。