零和释放的问题?

| 我正在使用名为allAvailableServices的NSArray。 首先我初始化它,然后写
[allAvailableServices release];
然后我检查条件是否(allAvailableServices)。  这是真的!我可以知道原因。 然后我写
allAvailableServices = nil;
[allAvailableServices release];
在上面的代码之后if(allAvailableServices)变成false。我在
allAvailableServices = nil;
之后写
[allAvailableServices release];
是否有任何问题 每当
allAvailableServices = nil
我需要分配新的array.so如果我不打电话给
[allAvailableServices release];
我认为这是内存问题。我正确吗? 谁能为我提供最好的应对方法?     
已邀请:
        Release只是回收内存,但是指针值没有改变;它仍然包含一个值,但它指向垃圾。 这就是为什么许多人在释放指针后都将指针归零的原因:
[allAvailableServices release], allAvailableServices = nil;
在Objective-C中,将消息发送到nil是安全的,但是将消息发送到已释放的对象可能会导致应用程序崩溃(通常使用EXC_BAD_ACCESS) 请注意,在将对象设置为nil之前,我已经释放了该对象。如果相反,则丢失了发送释放消息的指针,因此泄漏了该对象。     
        如果使用访问器,则可以将值直接设置为nil,它会调用release并将它们设置为nil。发行版将引用计数减1,如果引用计数达到0,则释放对象。 如果您未将其设置为nil,则内存仍然具有某些值,因此if条件下的问题会出现。 干净的方法是使用访问器并调用
self.yourvariable = nil;
。     

要回复问题请先登录注册