property属性的setter、getter方法

本文探讨了Objective-C中property属性的使用及setter、getter方法的重写技巧。解释了如何通过@synthesize指令来确保属性正常工作,并区分_object与self.object的不同应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通常在开发过程中,定义的property属性会自动生成setter和getter方法,开发者也无需再重写@synthesize xxx = _xxx。

但有些时候,开发者会根据需要进行对property属性重写其setter方法、getter方法。在重写时,肯定会遇上报错提示:该变量没有定义。

这时候,要解决这个问题,只需要加上语句"@synthesize xxx = _xxx"。

这是因为@property默认给该属性生成getter和setter方法,当getter和setter方法同时被重写时,则系统就不会自动生成getter和setter方法了,也不会自动帮你生成_num变量,所以不会识别,也就提示变量没有定义了。

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

@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。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

番薯大佬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值