iPhone对象检查释放

我想检查一个对象是否有计数这是我的测试代码
NSMutableArray  *array=[[NSMutableArray alloc]init];

    if(array)
    {
        NSLog(@\"hiiiiiii\"); 
    }
案例2
NSMutableArray  *array=[[NSMutableArray alloc]init];
    [array release];
    if(array)
    {
        NSLog(@\"hiiiiiii\"); 
    }
在这两种情况下,我得到的输出与打印的“ hiiiiiii”相同。 谁能告诉我如何检查我的对象是否需要释放或已经释放。 我知道我应该跟踪对象的计数器,但是我处于我的代码过于复杂并且需要帮助的阶段。 请帮忙.. 还告诉苹果允许多少内存泄漏?
已邀请:
无法检查您是否“应该”释放对象。像\“ if(object)\”这样的操作只会检查指向该对象的指针。即使指向的对象很久以前被销毁,它也会返回true。这是第二种情况。当您调用release时,该对象被销毁,但是指针仍指向某物,因此它返回true。如果指针设置为nil,它将仅返回false。 但是,有一组简单的调用释放规则。如果曾经在对象上调用\“ alloc \”,\“ new \”,\“ copy \”,\“ mutableCopy \”或\“ retain \”,则必须始终调用\“ release \”或\“ autorelease \” “ 在上面。这样可以防止任何内存泄漏。 Apple没有允许的公开数量的内存泄漏。消除任何已知的内存泄漏总是最安全的。此外,这将为您的客户带来更好的性能。
在第二种情况下,您将释放NSMutableArray,但仍将存储一个非零值,尽管它不再使用(调用函数或获取值)。这就是您的
if
条件得到
true
的原因。 只要记住当您在任何对象上调用
release
时,别忘了给它分配
nil
,因此您的第二个代码应如下所示。 案例2
NSMutableArray  *array=[[NSMutableArray alloc]init];
    [array release];
     array = nil;
    if(array)
    {
        NSLog(@\"hiiiiiii\"); 
    }
如果您已分配或保留必须在其上调用release的任何对象,则Object-C中有一个简单的内存管理规则, 阅读Apple提供的内存管理指南。

要回复问题请先登录注册