Objective c 如果此条件为真,如何释放对象?

Objective c 如果此条件为真,如何释放对象?,objective-c,Objective C,我不明白为什么我要检查 po [search searchResults] 我收到:消息已发送到解除分配的实例0x8835650 即使我在以下if语句之后检查对象: if ([search searchResults]) { NSLog(@"[search searchResults] %@", [search searchResults]); // breakpoint here! 我认为只有分配了对象searchResults,条件才是真的 谢谢只要search指向除nil以外的任

我不明白为什么我要检查

po [search searchResults]
我收到:
消息已发送到解除分配的实例0x8835650

即使我在以下if语句之后检查对象

if ([search searchResults]) {
   NSLog(@"[search searchResults] %@", [search searchResults]); // breakpoint here!
我认为只有分配了对象searchResults,条件才是真的


谢谢

只要
search
指向除
nil
以外的任何对象,该条件就是正确的

即使实例被解除分配,指向该实例的指针也不会自动设置为
nil

编辑:


您在这里最有可能做的是分配一个类的自动释放实例,并将其分配给一个变量而不保留它;随后通过自动释放池排水管,引起各种各样的头痛。

谢谢。因此,出于好奇,我应该如何更改if语句以有效地检查实例是否已分配?最重要的是,考虑到代码的复杂性,我面临着在不保留实例的情况下查找实例何时已分配的困难。有小费吗?你不能。这就是所谓的陈旧指针,而它们通常是一件坏事™. 你必须找到指针失效的原因,并加以修复;最有可能的罪魁祸首是
搜索
首次分配到的位置。已解决!最后我忘了用self。在属性前面正确调用setter(并保留对象)。