2016-05-19 11 views
0

Objective-Cでテーブル検索を使用してiOSアプリケーションを実行したい。今私は、ナビゲーションビューとテーブルビュー間の通常のビューを設定しようとしたiOS - NSInternalInconsistencyException(テーブル検索)

https://github.com/versluis/Table-Search-2015

:私はこのプロジェクトを試してみました。通常のビューでは、テーブルビューにプッシュセグを持つボタンがあります。

私はこのボタンを押すとテーブルビューになり、検索はまだ動作しています。しかし、今すぐ戻るボタンを使用すると、次のメッセージでアプリケーションがクラッシュします。

2016-05-19 23:23:29.135テーブル検索[2533:63871] ***キャッチされない例外のためにアプリケーションを終了する ' NSInternalInconsistencyException '、reason:' MainTableViewControllerクラスのインスタンス0x7f81b95db6e0が、キー値オブザーバがまだ登録されている間に割り当て解除されました。現在の観測情報:< NSKeyValueObservationInfo 0x7f81b945c000>( < NSKeyValueObservance 0x7f81b9428720:オブザーバー:0x7f81b95e9830、鍵のパス:結果、オプション:<新:YES、旧:NO、前:NO>コンテキスト:0x0の、プロパティ:0x7f81b94286f0> 「)

ここで間違っていることを誰かが知っていますか?このプロジェクトを見ることができればいいですね。

答えて

1

MainTableViewControllerの割り当てを解除する前に、オブザーバーをキー値から削除する必要があります。これを行うには、deallocをオーバーライドします。次のように追加する必要があります。

- (void)dealloc 
{ 
    [self removeObserver:self.controller.searchResultsController forKeyPath:@"results"]; 
} 

~MainTableViewController

+0

いいえ、アプリケーションはもうクラッシュしませんが、コンソールに次のメッセージが表示されます。割り当て解除中にView Controllerのビューを読み込もうとすると、未定義の動作が発生する可能性があります()それを無視することができますか? – Nono

+0

あなたの質問には関係ありません。私があなたのリンクを使って作ったデモプロジェクトには表示されません。ここで回答を確認してください:http://stackoverflow.com/questions/32282401/attempting-to-load-the-view-of-a-view-controller-while-it-is-deallocating-uis – beyowulf