2011-12-13 50 views
1

我不知道爲什麼,如果我檢查如果這個條件成立,對象如何被釋放?

po [search searchResults] 

我得到:message sent to deallocated instance 0x8835650

即使我檢查對象後以下if語句:

if ([search searchResults]) { 
    NSLog(@"[search searchResults] %@", [search searchResults]); // breakpoint here! 

我只有在分配對象searchResults時才認爲條件爲真。

感謝

回答

0

的條件爲真,只要search點,比nil其他任何東西。

即使該實例被解除分配,指針該實例也不會自動設置爲nil

編輯:

什麼,你最有可能在這裏完成被分配一個類的實例自動釋放,並將其分配給一個變量,而不是保存;隨後通過autorelease池流失,導致各種頭痛。

+0

謝謝。所以,出於好奇,我應該如何改變if語句來有效地檢查實例是否被分配? – aneuryzm

+0

最重要的是,鑑於代碼的複雜性,我很難找到何時分配實例而不保留實例。任何提示? – aneuryzm

+0

你不能。這就是所謂的陳舊指針,通常它們是壞事™。你必須找到你的指針失效的原因,並解決這個問題。 –

相關問題