财产申报不可避免时 - 目标C 2.0

时间:2012-04-12 06:23:13

标签: iphone objective-c-2.0

在维护项目上工作时,我正在努力处理大量凌乱的代码。在当前的赋值中,我发现前一个开发人员已经为该类的每个iVar和IBOutlet定义了属性(和合成)。

根据我的理解,我曾经习惯性地只声明那些我打算在该类之外使用的变量。大多数时候,我不需要为任何IBOutlet声明属性(当然也要合成)。

我是否可以获得任何答案或文件“何时宣布财产并合成是必要的(或必要的)”?

编辑:

在阅读了Dr.Kameleon指出的帖子后,另一个问题出现在我的脑海中:代码中有哪些漏洞,如果我将每个iVar声明为Propery并合成它们?我可以那样走吗?

2 个答案:

答案 0 :(得分:1)

关于何时使用财产以及何时使用ivar,没有这样的规则。使用两者都有自己的优势 -

使用ivar -

  1. 使用ivar提供小的性能优势。
  2. 用户必须通过引用计数手动进行内存管理
  3. 使用属性 -

    1. 这确保了KVO合规性代码。
    2. 通过使用属性,访问者可以进行内存管理。
    3. 您可以查看以下主题以获取更多洞察信息 - http://cocoawithlove.com/2010/03/dynamic-ivars-solving-fragile-base.html

      在我看来,我总是喜欢使用财产,因为它比ivars有很多好处。

答案 1 :(得分:1)

我认为一般来说很难说拥有一两件额外的财产就是那么糟糕。话虽如此,包括许多属性和变量可能会使事情变得混乱并使代码难以理解和维护。而且您并不需要为视图中的每个frazmabob提供IBOutlet。因此,如果你想要削减脂肪,只需摆脱在运行时不需要操作的任何东西。这听起来很简单,因为它是 - 包含变量/属性的唯一原因是你预计在运行时使用它。

至于向外界呈现属性,你是对的,它是OO编程的一个主要概念,可以在不需要呈现时隐藏它们。如果您是团队成员并且不希望其他人滥用您的数据,这一点非常重要。所以去吧 - 清理那些代码,让自己和其他人的生活变得更轻松。