@property (nonatomic,retain) NSString *name;
@synthesize name;
其实是声明了 name 的 getter 和 setter 方法;
等同于
-(NSString*)getName
{
return name;
}
-(void)setName:(NSString*)myname
{
if(name != myname)
{
[name release];
[myname retain];
name = myname;
}
}
所以在调用属性 name 时候,用 self.name = 赋值时候 ,其实是调用了setName的方法;
NSString * studentName = [[NSString alloc] initWithFormat :@"xiaohong"]; // retain count 为 1
self.name = studentName; // retain count 为 2
[studentName release]; // retain count 为 1