关于 @property 和 self.

@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

原文地址:https://www.cnblogs.com/417460188dy/p/3225169.html