1

Apple の Contacts アプリによく似た iOS5 アプリを作成しました。検索バー、serachdisplaycontroller テーブルビュー。ユーザーがセルをタップすると、セグエを使用して詳細ビューが表示されます (モーダル スタイル...)。すべて正常に動作しますが、実際の iPhone 4S デバイスで、アプリがバックグラウンドで数時間スリープ状態になり、その後再びアクティブになると、アプリがクラッシュするのを見てきました。秩序だった状況下でクラッシュを再現することは不可能です。わかりました、ある種のメモリの問題...

iOS シミュレーターでは、次の場合にクラッシュを確認できます。

-> セル (または設定ビューのボタン) がタップされる -> 詳細ビューが表示される (または設定ビューが表示される) -> 「Simulate Memory Warning」が発行される -> ユーザーが元に戻ろうとする「完了」ボタンを使用します。

- (IBAction)done:(id)sender
{
    [self.delegate detailedViewControllerDidFinish:self];
}

- (void)detailedViewControllerDidFinish:(DetailedViewController *)controller
{    
    [self dismissModalViewControllerAnimated:YES];
}

2012-01-17 19:58:43.777 MyApp[89968:f803] * キャッチされない例外 'NSUnknownKeyException' が原因でアプリを終了しています。理由: '[ setValue:forUndefinedKey:]: このクラスは、キー searchBar のキー値コーディングに準拠していません.' *最初のスロー コール スタック:...

したがって、OSがアプリのメモリの一部を取り戻したい場合、何らかの理由でserachbardisplaycontrolが無効になります(推測します)

何か案は?

4

1 に答える 1

1

私はこれをうまく解決したと思います。これは、メモリ不足状態がトリガーされたときにアクティブになっている検索バーに帰着します。メモリ不足の状態になったら、次のようにします。

[self.searchDisplayController setActive:NO animated:NO];

それはそれを修正する必要があります。

于 2012-12-06T19:16:13.113 に答える