测试对象是否存在?

时间:2011-03-09 16:41:51

标签: objective-c memory-management null

Foo*foo1;

foo1=[[Foo alloc]init];

发布后,对象foo1仍指向某个内存,但该对象不存在。我想做这样的事情:

if (foo1)
{
    doSomething;
}

我无法分配nil,因为这个对象可能存在,如果将其分配给nil,我可能会泄漏。

如何知道对象是否存在?

2 个答案:

答案 0 :(得分:2)

每当释放一个对象时,都应该将指针设置为nil。在你的情况下:

Foo *foo1 = [[Foo alloc] init];

... doing stuff with foo1 ...

[foo1 release], foo1 = nil;

foo1 = nil的分配不会以任何方式修改对象。它会清除指针到对象。由于您已经释放了对象的保留,显然您不再关心它,因此您应该清除指向它的指针。

答案 1 :(得分:-1)

当一个对象被释放后,其 retainCount 为0。