Col*_*inE 13 cocoa objective-c instance-variables ios
在Apple的Objective-C编程中,关于封装数据的部分指出:
您可以定义没有属性的实例变量
最好在需要跟踪值或其他对象时在对象上使用属性.
换句话说,他们强烈建议您使用私有属性而不是实例变量用于任何私有对象状态.
我想知道为什么会这样呢?我知道属性具有KVO和属性(强,弱......)等功能,但在很多情况下我不需要这些功能,实例变量也可以正常工作.
实例变量可能不被视为最佳实践有什么好的理由吗?
尽管现在您的私有变量可能作为普通变量工作,但您稍后可能会决定某些属性“好东西”是有用的:
如果您仅将变量作为属性访问,则不会增加太多开销(除了在紧密的循环中),并且为获得上述任何好处留下了空间。
基本上,即使您不打算公开属性,属性也是有用的。
当然,有些地方使用实例变量仍然“更自然”,例如,如果您在类簇中重新实现基础类(例如NSArray),则预计您的实现是私有的且高性能的,因此我不使用那么属性。
另外,我认为你不应该过多地阅读这些建议。对我来说,它读起来更像是“如果您 5 分钟前才了解属性和实例变量,那么让我们先从使用属性开始”。
刚接触这门语言的人可能会在不知道实例变量是什么的情况下走得很远。