A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 噜噜噜sir 初级黑马   /  2015-10-6 16:39  /  779 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在OC中,设置成员变量上,建议使用@property,可以自动生成set/get方法。
但是,为什么不直接用protect变量呢?

如果直接用protect变量,完全可以达到使用set/get方法的目的,即禁止外部访问。
同时,如果在用@property时有重写get的需求的话,那么单独写protect就OK了。

因此,感觉@property就是很鸡肋的东西。貌似唯一的用处就是可以在子类中继承父类的set和get方法。

求大神解惑。

4 个回复

倒序浏览
????????????????
回复 使用道具 举报
@property是编译器指令,个人理解是Apple为方便开发者,降低敲击代码工作量而作的优化。
如果实例变量非常多,靠我们手动去编写setter和getter是非常重复和枯燥的工作,这时候@property可以派上用场,不用再一一实现setter和getter。

但老师也讲了,@property既有好处也有缺点,好处是方便,高效率,缺点是不够灵活。如果我们想在setter中利用条件控制实例变量的设定,那必须手动写,而不能使用@property.
回复 使用道具 举报
又看了一遍你的提问,@property的作用主要是简化写法,而不是达到禁止外部访问的目的。
回复 使用道具 举报
挺好的!支持一下
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马