iOS|property属性的setter、getter方法

通常在开发过程中,定义的property属性会自动生成setter和getter方法,开发者也无需再重写@synthesize xxx = _xxx。
但有些时候,开发者会根据需要进行对property属性重写其setter方法、getter方法。在重写时,肯定会遇上报错提示:该变量没有定义。
这时候,要解决这个问题,只需要加上语句"@synthesize xxx = _xxx"。
这是因为@property默认给该属性生成getter和setter方法,当getter和setter方法同时被重写时,则系统就不会自动生成getter和setter方法了,也不会自动帮你生成_num变量,所以不会识别,也就提示变量没有定义了。


声明的property属性,通常无需特意指定synthesize,Objective-C就会自动的声明一个_开头的实例变量。即如下所示:
【iOS|property属性的setter、getter方法】

@property (nonatomic, strong) NSObject *object; @synthesize object = _object;

其中,_object访问的是object的地址。self.object访问的是object的getter。这两者并不是完全等价的,self.object是用objc_msgSend发消息,_object或者self->object则是直接访问内存地址,一般建议在init里面用_object,其他地方用self.object。



    推荐阅读