Objective c 何时使用自动释放变量?

Objective c 何时使用自动释放变量?,objective-c,memory-management,autorelease,Objective C,Memory Management,Autorelease,在什么情况下我应该使用自动释放变量? 以下哪种方法最好 使用obj=[[u className alloc]init]autorelease], obj=[[[u className alloc]init]并将obj作为[obj release] 请帮忙 另外,当我希望创建一个本地对象并在如下循环控制结构中使用时,应该使用什么 for(int i = 0;i<10;i++) { _className obj = [[_className alloc]init];//Should

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

  • 使用
    obj=[[u className alloc]init]autorelease],

  • obj=[[[u 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...
    }
    

    for(inti=0;i最好的方法是使用ARC,而不必担心它

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

    我看到案例1使用的一个地方是将对象分配给属性时,因此它将是一个单行语句,使用autorelease而不是allocate、assign to property和release


    你不使用ARC有什么原因吗?

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

    你应该移动到
    ARC
    ,因为这样你就不需要释放任何东西了。