3

在进行维护项目时,我正在努力处理大量杂乱的代码。在当前的作业中,我发现以前的开发人员已经为类的每个 iVar 和 IBOutlet 定义了属性(和综合)。

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

我可以就“何时需要(或必须)声明财产和合成”有任何答案或文件吗?

编辑:

在阅读了 Dr.Kameleon 指出的帖子后,我想到了另一个问题:如果我将每个 iVar 声明为属性并合成它们,代码中可能存在哪些漏洞?我可以走那条路吗?

4

2 回答 2

1

没有关于何时使用属性和何时使用 ivar 的规则。使用两者都有自己的优势-

使用 ivar-

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

使用属性-

  1. 这确保了 KVO 合规性代码。
  2. 通过使用属性,内存管理由访问器进行。

您可以查看以下主题以获取更多洞察信息 - http://cocoawithlove.com/2010/03/dynamic-ivars-solving-fragile-base.html

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

于 2012-04-12T06:46:17.113 回答
1

我认为总的来说,很难说拥有一两个额外的财产就是那么糟糕。话虽如此,包含大量的属性和变量会使事情变得混乱,并使代码难以理解和维护。而且您实际上并不需要为您视图中的每个 frazmabob 设置一个 IBOutlet。因此,如果您想稍微减少脂肪,只需摆脱在运行时不需要操作的任何内容。这听起来很简单,因为它是 - 包含变量/属性的唯一原因是如果您预计在运行时使用它。

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

于 2012-04-12T06:46:36.927 回答