iOS@synthesize 和 @property

1.首先讲@property, 这是iOS6以后出来的关键词. 用它声明一个属性之后, 编译器会自动给你生成setter和getter方法.

@property (nonatomic, retain) NSString *name;

setter方法如下:

-(void)setName:(NSString*)_name{  
     //首先判断是否与旧对象一致,如果不一致进行赋值。  
     //因为如果是一个对象的话,进行if内的代码会造成一个极端的情况:当此name的retain为1时,使此次的set操作让实例name提前释放,而达不到赋值目的。  
     if ( name != _name){  
          [name release];  
          name = [_name retain];  
     }  
}

getter方法如下

- (NSString *) name

{

return _name;

}

2. 而在.m中声明的@synthesize

@synthesize name = _name;

这样self.name = otherString和name = otherString都可以正常编译通过,但是前者调用了setter方法进行了一次copy,后者没有,相当于assign/weak。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。