内存管理:手动保留/释放或访问方法?

时间:2010-10-28 12:58:13

标签: iphone memory-management

最佳方法是什么:

  • 泄漏的安全和控制?
  • 性能?
  • 在课外的能见度?

首先:保持对每个变量的控制

if (objectProperty_ != anObject) {
    [objectProperty_ release];
    objectProperty_ = [anObject retain];
}

第二次:声明属性并使用访问器并让系统完成工作

@property (nonatomic, readwrite, retain) NSObject *objectProperty;
...
@synthesize objectProperty = objectProperty_;
...
self.objectProperty = anObject;

谢谢。

3 个答案:

答案 0 :(得分:2)

尽可能使用属性。

  1. 他们可以节省您编写大量样板访问器方法的麻烦。在属性之前的几天,可能每个Cocoa程序员都有一对用于定义访问器的宏。
  2. @property自动记录访问者的语义。例如,在您的示例中,我可以从界面中看到objectProperty保留其值,而不是分配或复制它。
  3. 当您声明属性但定义自己的访问者时,第2点甚至成立。

答案 1 :(得分:1)

最有可能保持理智的方法是尽可能使用Apple编写的访问器,并在必要时编写自己的访问器。

访问者方法调用确实增加了一点时间;我在iPad上计时,我觉得它大概是10 ^ -7秒。无论您是自己编写方法还是使用Apple,都应该如此。除了最极端的情况之外,这一切都不太重要。

答案 2 :(得分:1)

更少的代码意味着更少的错误,所以如果你必须为公共访问声明读写属性,只需使用属性来设置。