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。

为何是一个人?也有善意的提醒:

iOS@synthesize 和 @property

相关文章:

你感兴趣的文章:

标签云: