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。
推荐阅读
- 第6.2章(设置属性)
- 2020-04-07vue中Axios的封装和API接口的管理
- iOS中的Block
- 代笔(想象)
- 每一个节气
- 记录iOS生成分享图片的一些问题,根据UIView生成固定尺寸的分享图片
- 很多网红在用的素颜霜,你知道它是属于护肤品还是化妆品吗()
- 2019-08-29|2019-08-29 iOS13适配那点事
- Hacking|Hacking with iOS: SwiftUI Edition - SnowSeeker 项目(一)
- iOS面试题--基础