0

在什么情况下我应该使用自动释放的变量?以下哪种方法最好..

  1. 利用 obj= [[_className alloc]init]autorelease],

  2. obj = [[_className alloc]init]并将 obj 释放为[obj release]

    请帮忙。

另外,当我希望在循环控制结构中创建和使用本地对象时,我应该使用什么,如下所示。.

for(int i = 0;i<10;i++)
{
    _className obj = [[_className alloc]init];//Should I use autorelease here?
                                              
       .
       . // Use this obj.. 
       .
    [obj release];//If autoreleased is not used...
}

我应该从列出的选项中使用什么?哪个应该更好和优化?

4

2 回答 2

2

最好的方法是使用 ARC 而不必担心它。

但如果你不使用 ARC,我通常更喜欢案例 2。问题是当前的自动释放池何时会被耗尽。如果有一个需要大量工作的循环,或者我在一个库中不知道它将在其中运行的上下文,我可以控制何时释放对象而不是自动释放,并且它会在未来某个未知时间发生。我可以为循环创建自己的自动释放池,但我更喜欢显式释放。

我看到案例 1 使用的一个地方是在将对象分配给属性时,因此它将是使用自动释放而不是分配、分配给属性、释放的单行语句。

你有理由不使用ARC吗?

于 2013-10-10T14:06:10.310 回答
0

如果您不使用 ARC,那么当您不知道变量的范围时,我会说使用 autorelease。当您知道变量的范围时,请使用 release。

于 2013-10-10T14:55:37.873 回答