Questions tagged «ivar»

7
为什么要使用ivar?
我通常会以相反的方式问这个问题,例如,每个ivar都必须是一个属性吗?(而且我喜欢bbum对这个问题的回答)。 我几乎只在代码中使用属性。但是,我经常与一个承包商合作,该承包商已经在iOS上开发了很长时间,并且是传统的游戏程序员。他编写的代码几乎不声明任何属性,而是依靠ivars。我认为他这样做是因为1.)他习惯了,因为直到Objective C 2.0('Oct '07)和2.)才开始存在属性,以实现不通过getter / setter方法的最小性能提升。 尽管他编写的代码不会泄漏,但我仍然希望他使用属性而不是ivars。我们讨论了这个问题,由于我们没有使用KVO,他或多或少地认为没有理由使用属性,并且他在处理内存问题方面经验丰富。 我的问题是更多...为什么您要使用ivar期间-经验丰富与否。是否确实有很大的性能差异可以证明使用ivar是合理的? 同样,为了澄清起见,我根据需要覆盖了setter和getter,并使用了与getter / setter内部与该属性相关的ivar。但是,在getter / setter或init之外,我始终使用self.myProperty语法。 编辑1 我感谢所有的良好回应。我想解决的一个看起来不正确的问题是,使用ivar可以封装,而使用属性则不需要。只需在类延续中定义属性即可。这将使财产对外界隐藏。您还可以在接口中将属性声明为readonly,然后在实现中将其重新定义为readwrite,例如: // readonly for outsiders @property (nonatomic, copy, readonly) NSString * name; 并在课堂上继续学习: // readwrite within this file @property (nonatomic, copy) NSString * name; 要使其完全“私有”,只能在类继续中声明它。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.