Foo*foo1;
foo1=[[Foo alloc]init];
发布后,对象foo1
仍指向某个内存,但该对象不存在。我想做这样的事情:
if (foo1)
{
doSomething;
}
我无法分配nil
,因为这个对象可能存在,如果将其分配给nil
,我可能会泄漏。
如何知道对象是否存在?
答案 0 :(得分:2)
每当释放一个对象时,都应该将指针设置为nil。在你的情况下:
Foo *foo1 = [[Foo alloc] init];
... doing stuff with foo1 ...
[foo1 release], foo1 = nil;
foo1 = nil
的分配不会以任何方式修改对象。它会清除指针到对象。由于您已经释放了对象的保留,显然您不再关心它,因此您应该清除指向它的指针。
答案 1 :(得分:-1)
当一个对象被释放后,其 retainCount 为0。