4

こんにちは、私の iPad アプリケーションでは、検索バーとテーブルビューを使用しています。検索が完了すると、結果がテーブルビューに表示されます。新しい検索結果でテーブルを更新するために、reloadData メソッドを呼び出しています。正常に動作していますが、いくつかの状況で [tableviewobject reloaddata] メソッドでアプリがクラッシュし、コンソールでこのエラーが発生しています

オブジェクト 0x95a0300 のエラー: 解放されるポインターが割り当てられませんでした *デバッグするために malloc_error_break にブレークポイントを設定します。

上記のエラーを観察することで、テーブルビューオブジェクトがメモリから削除されていることがわかりました。解放されたオブジェクトにメッセージを送信しています。この問題を克服するために、私がしたことは、メッセージ reloadData を tableviewobject に渡す前にメモリを割り当てることです。

tableviewObject=[[UITableView alloc]init];
tableviewObject.delegate=self;
tableview.datasource=self;
[tableviewObject reloaddata];.

状況では、結果データはテーブルビューで更新されていません。今私が知りたいのは、オブジェクトが生きているか、メモリから解放されているかを知る方法です。検索結果データをリロードするためにテーブル ビュー オブジェクトにメモリを割り当てる方法を解放した場合。何かアイデアがあれば、これに対する解決策を提供してください。よろしくお願いします。

注: 私のプロジェクトでは、ARC を使用しています。

4

3 に答える 3

0

3 行目の UITableView の名前のスペルが間違っていることに気付きませんか?

tableviewObject=[[UITableView alloc]init];
tableviewObject.delegate=self;
tableview.datasource=self;
[tableviewObject reloaddata];

tableviewObject.datasource=self; である必要があります。

さらに、毎回新しいオブジェクトを作成するのはなぜですか? これで古いものはなくなります!最初で唯一の viewDidLoad メソッドで初期化するだけです

于 2013-05-23T10:29:01.180 に答える