我写了一个类,一辆车(Car)有四个轮胎(Tire),init车的时候,轮胎也就被创建好了,release车的时候,轮胎也会被释放掉。如下的代码会在我标注出错处出错,如果我想让调用者保持一个轮胎,我注释掉的代码是否比较规范的做法?或者应该怎么做?我刚开始学OC,希望高手能帮我讲解下。
#import "Car.h"
#import "Tire.h"
int main(int argc, const char * argv[])
{
Tire* ptile=nil;
Car* mycar = [[Car alloc] init];
ptile = [mycar tileAtIndex:0];
//[ptile retain];
[mycar release];
NSLog(@"%@",[ptile description]); //出错
//[ptile release];
return 0;
}
#import "Car.h"
#import "Tire.h"
int main(int argc, const char * argv[])
{
Tire* ptile=nil;
Car* mycar = [[Car alloc] init];
ptile = [mycar tileAtIndex:0];
//[ptile retain];
[mycar release];
NSLog(@"%@",[ptile description]); //出错
//[ptile release];
return 0;
}
[mycar release];
NSLog(@"%@",[ptile description]); //出错
//[ptile release];一般来说,就这样retain住就行了。
但一些特殊情况的话,可能用copy更好,(比如这个轮胎其他各个地方都在用,而你在这个地方想保持独立不想和其他地方公用一个对象)。