为了账号安全,请及时绑定邮箱和手机立即绑定

为什么要使用ivar?

为什么要使用ivar?

iOS
蛊毒传说 2019-10-14 13:59:12
我通常会以相反的方式问这个问题,例如,每个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;要使其完全“私有”,只能在类继续中声明它。
查看完整描述

3 回答

  • 3 回答
  • 0 关注
  • 386 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信