我是否需要从此示例中释放临时对象?

时间:2010-03-18 16:09:40

标签: objective-c programming-languages syntax

-(IBAction) testTemp: (id) sender{
    id tempObj;
    tempObj = otherObject; //the otherObject will be released in dealloc method;
    [tempObj doSomething];
}

如您所见,我使用tempObj进行临时使用。用户退出此方法后我不会使用它,我是否需要释放tempObj?为什么?

2 个答案:

答案 0 :(得分:0)

不,你不需要释放tempObj。原因是您没有保留它或对其进行任何内存管理。所有tempObj都是指向otherObject的指针,你只是将它用作别名。

在代码中有任何理由不直接使用otherObject - 如果在实际代码中你需要使用tempObj,那么可能会涉及一些内存管理。

答案 1 :(得分:0)

tempObj不是对象。 tempObj是一个变量。 tempObj包含指向对象的指针和赋值tempObj = otherObject使otherObject包含相同的指针。

对象是内存的一部分。每个对象都有一个计数器,即参考计数器。 [tempObj retain]将1添加到引用计数器,[tempObj release]从引用计数器中减去1。这是一种了解您使用对象的地方的方法。当计数达到0时,对象被宣布为死亡。没有人应该再使用它了:它所居住的内存部分可能会被其他一些物体使用。

因此您不希望释放otherObject或tempObj,这将获得相同的效果(从对象的引用计数中减去1)。如果你这样做,引用计数可能会达到0,并且dealloc方法中的释放可能会导致崩溃。