我什么时候解除对象?

时间:2011-09-19 07:22:24

标签: iphone ios memory-management ios4 dealloc

在我的一个函数中,我有一个带有某种情况的while循环,它可能需要临时创建一个对象。我的代码如下所示:

while(c < end){
    if(specialCase){
        Object *myObject = [Object alloc];
        //do stuff with myObject
        //I tried [myObject dealloc] here, but it crashed when this method was called.
    }
    c++;
}

代码工作正常,但我担心内存泄漏。我想知道是否以及如何释放myObject。

4 个答案:

答案 0 :(得分:5)

你永远不要直接打电话给Dealloc。

你调用Release并且当retain count达到0时,将在object上调用dealloc。

答案 1 :(得分:1)

您不应直接调用dealloc方法 ,在releasealloced对象上调用retain将调用{{1隐含,如果对象保留计数符合 iOS系统的条件(通常,如果对象的保留计数 ZERO

阅读NSObject课程中dealloc方法的Apple文档,并通过Memory Management Programming Guide了解Objective-C

答案 2 :(得分:0)

试试这个

while(c < end){
if(specialCase){
Object *myObject = [[Object alloc] autorelease];
    //do stuff with myObject
    //I tried [myObject dealloc] here, but it crashed when this method was called.
}
c++;

}

答案 3 :(得分:0)

您可以尝试使用智能指针。 这应该处理垃圾收集和任何异常处理。此外,Boost库可以移植到ios。