У меня есть метод:Проблема с управлением памятью в Objective-C
- (void)setName:(ModelClass *)model {
[model release];
ModelClass *tmp = [[[ModelClass alloc] initWithId:@"New"] autorelease];
model = [tmp retain];
NSLog([NSString stringWithFormat:@"Gia tri trong la %@",model.modelClassId]);
}
и
- (void)viewDidLoad {
[super viewDidLoad];
ModelClass *tmp3 = [[ModelClass alloc] initWithId:@"Old"];
[self setName:tmp3];
ModelClass *tmp4 = [[ModelClass alloc] initWithId:@"Old"];
ModelClass *tmp5 = [[ModelClass alloc] initWithId:@"Old"];
ModelClass *tmp6 = [[ModelClass alloc] initWithId:@"Old"];
ModelClass *tmp7 = [[ModelClass alloc] initWithId:@"Old"];
NSLog(tmp3.modelClassId);
}
Он работает нормально. Но когда я пишу:
- (void)setName:(ModelClass *)model {
ModelClass *tmp = [[[ModelClass alloc] initWithId:@"New"] autorelease];
[model release];
model = [tmp retain];
NSLog([NSString stringWithFormat:@"Gia tri trong la %@",model.modelClassId]);
}
это ломает мое приложение. Кто-нибудь может объяснить мне, какая разница между этими двумя случаями?
Ваш код ничего не сделал бы. Чего вы пытаетесь достичь именно? Проблема может быть в ModelClass, поэтому, если вы можете показать нам код, который это поможет. – tia