@synthesize obj=_obj个人理解

来源:互联网 发布:彩票统计软件 编辑:程序博客网 时间:2024/06/03 15:19

如影随形的property

正常情况下synthesize有一个小伙伴property,这个小伙伴比synthesize更加的耀眼,因为当你在接口中使用了@property而不使用@synthesize的时候,Xcode是不会报错的,反而会帮你生成两个方法和一个变量。比如:

@property (nonatomic,strong) NSString* obj;

此时xcode会生成一个setObj和getObj方法,以及一个名为_obj成员变量。因此你可以在实现文件的代码里面使用 _obj此变量,也可以使用self.obj对此变量进行访问,因为self.obj是 _obj的getter以及setter方法的缩写。
那么如果在实现文件里面声明了synthesize又是什么效果呢?

@property (nonatomic,strong) NSString* obj;@synthesize obj;

此时代码其实就等价于

@property (nonatomic,strong) NSString* obj;@synthesize obj=obj;

此代码的效果就是xcode生成变量obj以及setObj和getObj方法,所以在实现文件中可以使用obj这个变量,以及self.obj访问obj这个变量,因为self.obj是obj的getter和setter方法的缩写。
还有一种写法:

@property (nonatomic,strong) NSString* obj;@synthesize obj=_obj;

此代码的效果是xcode生成一个setObj和getObj方法,以及一个名为_obj成员变量。因此你可以在实现文件的代码里面使用 _obj此变量,也可以使用self.obj对此变量进行访问,因为self.obj是 _obj的getter以及setter方法的缩写。和第一个写法的结果是一样的。

小结

@property x声明了self.x这个存取方法(getter和setter),@synthesize就是生成这两个方法。(省略了也会自动生成),使用@synthesize x=y含义就是生成一个y变量(这个y必须要先声明的),然后生成y的存取方法setY和getY,其缩写是self.x。
参考网址:http://www.jianshu.com/p/69f7bc1beb87

0 0