Iphone 内存管理:手动保留/释放还是访问器方法?

Iphone 内存管理:手动保留/释放还是访问器方法?,iphone,memory-management,Iphone,Memory Management,在以下方面,最佳方法是什么: 泄漏的安全和控制 表演 你在班上吗 首先:保持对每个变量的控制 if (objectProperty_ != anObject) { [objectProperty_ release]; objectProperty_ = [anObject retain]; } 第二个:声明属性并使用访问器,让系统完成工作 @property (nonatomic, readwrite, retain) NSObject *objectProperty; .

在以下方面,最佳方法是什么:

  • 泄漏的安全和控制
  • 表演
  • 你在班上吗
首先:保持对每个变量的控制

if (objectProperty_ != anObject) {
    [objectProperty_ release];
    objectProperty_ = [anObject retain];
}
第二个:声明属性并使用访问器,让系统完成工作

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

谢谢。

最有可能让你保持理智的方法是在可能的时候使用Apple编写的访问器,在必须的时候编写自己的访问器


访问器方法调用确实增加了少量时间;我在我的iPad上计时,我想大概是10-7秒。无论您是自己编写方法还是使用Apple的方法,这都应该是正确的。在除了最极端的情况之外的所有情况下,这都不太重要。

最有可能让你保持理智的方法是在可能的时候使用Apple编写的访问器,在必须的时候编写自己的访问器


访问器方法调用确实增加了少量时间;我在我的iPad上计时,我想大概是10-7秒。无论您是自己编写方法还是使用Apple的方法,这都应该是正确的。在除最极端的情况外的所有情况下,这都不太重要。

尽可能使用属性

  • 它们节省了您编写大量样板访问器方法的时间。在属性之前的日子里,可能每个Cocoa程序员都有一对宏,用于定义访问器
  • @property
    自动记录访问器的语义。例如,在您的示例中,我可以从接口中看到objectProperty保留其值,而不是分配或复制它

  • 当您声明属性但定义自己的访问器时,第2点甚至适用。

    尽可能使用属性

  • 它们节省了您编写大量样板访问器方法的时间。在属性之前的日子里,可能每个Cocoa程序员都有一对宏,用于定义访问器
  • @property
    自动记录访问器的语义。例如,在您的示例中,我可以从接口中看到objectProperty保留其值,而不是分配或复制它

  • 当您声明属性但定义自己的访问器时,第2点甚至适用。

    更少的代码意味着更少的错误,因此,如果您必须为公共访问声明读写属性,则只需使用属性获取集。

    更少的代码意味着更少的错误,如果您必须为公共访问声明读写属性,则只需使用属性获取集