在我的一个函数中,我有一个带有某种情况的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。
答案 0 :(得分:5)
你永远不要直接打电话给Dealloc。
你调用Release并且当retain count达到0时,将在object上调用dealloc。
答案 1 :(得分:1)
您不应直接调用dealloc
方法 ,在release
或alloced
对象上调用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。