1

xcode で奇妙な動作が発生しています。エラーが正確に発生するわけではありませんが、コードの実行はbkpt #207スタック トレースが表示されずに停止します。

私のプログラムでは、タブが切り替わるたびに popToRootViewController を実行します。上記の動作は、MyViewController (スタックの 3 番目) からプログラムでポップし、タブをもう一度クリックした後に発生します。MyViewController が正しくポップされていることを確認できます。

NSZombiesEnabled を使用すると、次の出力が得られます。

*** -[MyViewController tableView:titleForHeaderInSection:]: message sent to deallocated instance 0x6a4a00

私の推測では、MyViewController の一部がまだそのタブバーにリンクされています。[self.tabBarController setSelectedIndex:kOtherTab] を使用して、プログラムでタブを切り替えています。

任意のポインタをいただければ幸いです。

4

2 に答える 2

4

NSTimer を呼び出すため、bkpt #207 で停止しました。

[Timer invalidate];
[Timer release];

正しいのは呼び出しのみです

[Timer invalidate];

bkpt #207 での停止は消えます。

  • 無効化にはリリースが含まれます。
  • 存在しないオブジェクトにリリースを送信すると、SIGABRT または EXC_BAD_ACCESS エラーが発生することが予想されます。
于 2012-11-08T21:21:33.487 に答える
1

デリゲートの割り当てが解除された後、何らかの理由でテーブルビューがデリゲート (MyViewController) を呼び出しているようです。

ここで行う最善の方法は、MyViewController が解放されたときに tableView のデリゲートを nil に設定することです。

于 2012-08-22T23:35:44.673 に答える