黑马程序员技术交流社区

标题: 关于@property和protect的区别 [打印本页]

作者: 噜噜噜sir    时间: 2015-10-6 16:39
标题: 关于@property和protect的区别
在OC中,设置成员变量上,建议使用@property,可以自动生成set/get方法。
但是,为什么不直接用protect变量呢?

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

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

求大神解惑。

作者: A侠    时间: 2015-10-6 16:41
????????????????
作者: 啦啦啦啦你    时间: 2015-10-6 17:08
@property是编译器指令,个人理解是Apple为方便开发者,降低敲击代码工作量而作的优化。
如果实例变量非常多,靠我们手动去编写setter和getter是非常重复和枯燥的工作,这时候@property可以派上用场,不用再一一实现setter和getter。

但老师也讲了,@property既有好处也有缺点,好处是方便,高效率,缺点是不够灵活。如果我们想在setter中利用条件控制实例变量的设定,那必须手动写,而不能使用@property.
作者: 啦啦啦啦你    时间: 2015-10-6 17:10
又看了一遍你的提问,@property的作用主要是简化写法,而不是达到禁止外部访问的目的。
作者: 超の    时间: 2015-10-6 18:14
挺好的!支持一下




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2