2013-10-10 53 views
0

在哪种情况下我应该使用autoreleased变量? 和方法是从以下最佳..何时使用自动释放变量?

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

  2. obj = [[_className alloc]init]和释放作为[obj release]

    请帮助OBJ。

另外我应该使用什么,当我想要创建和使用循环控制结构如下所示的alocal对象。 。

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... 
} 

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

+3

你应该转移到'ARC',因为那时你不需要发布任何东西。 – rckoenes

回答

2

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

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

我看到情况1使用的地方是当一个对象分配给一个属性,所以它将是一个使用autorelease而不是分配,分配到属性,释放的行语句。

有没有理由不使用ARC?

0

如果你不使用ARC,那么很快我会说,当你不知道你的变量的范围时使用autorelease。当你知道变量的范围时使用释放。