iOS 自定义Set方法,注意点

之前一直以为set方法就是为了,让外部调用提供外部接口用的,不过在最近沃尔玛项目中,我发现我错了,我错得特别离谱,以至于不仔细看我都被蒙过去了。

首先我们明确一点set方法,如果我们不自定义set方法,那么我们属性会自动实现set和get方法而且注意而且会生成实例变量

like:@property(nonatomic,weak) Nsstring *name;

那么系统会自动生成_name的实例变量。

那如果我们自定义是实现了set方法的话,你就别想用_name了,你不许手动在扩展里面添加一个_name的实例变量,否则就休想使用,注意不会自动生成了!

所以 我当初遇到这样一段代码

在一个

- (void)setItemsList方法里面

得到:

self.brandList = brands;


而且我自定义类里面有自定义实现set方法

- (void)setBrandList:(NSArray *)brandList


通过断点跟踪,发现当代码运行到self.brandList = brands时候

会自动跳入- (void)setBrandList:(NSArray *)brandList方法

而- (void)setBrandList:(NSArray *)brandList这个方法里面有一个

    _brandList = brandList;

注意这个_brandlist就是作者自定义的一个实例变量。不是系统自己生成的。

所以依次来说总结两点:

1.自定义set方法之后,没有办法使用到实例变量,只能手动添加

2.在我们这个自定义类里面同样可以用set方法来对属性进行逻辑处理,而且可以不给外面使用,单单set方法就给自定义里面使用。(我这个重写set的属性就是没有给外部使用)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值