@property (nonatomic, retain) NSString *name;
@synthesize name;
这种方式的本质是:
-(NSString *) name{
return name;
}
-(void) setName:(NSStrng *) newName{
if(name!=newName){
[name release];
name=[newName retain];
}
}
对setName方法的解释:
(1)为何要加name!=newName的判断
如果要是不加,传过来的参数如果是相同的,则newName会一直retain
(2)为何[name release]
如果不release,直接name=[newName retain],则name原先所指向的内存则会泄露,因为没有释放
本文详细解析了Objective-C中@property和@synthesize的使用方式及其背后的工作原理。重点介绍了name属性的getter和setter方法如何实现,包括为何需要判断新旧值是否相同及释放原有对象的原因。
6896

被折叠的 条评论
为什么被折叠?



