0

NSFetchRequest を使用して、Core Data に格納されているオブジェクトに基づいて UITableView にセクションを作成しています。

viewDidLoad でフェッチ要求を実行し、返された NSManagedObjects の配列をクラス変数 NSArray *allEvents に設定します。フェッチリクエストから返された配列を次のように設定していました:

    allEvents = [context executeFetchRequest:eventFetchRequest error:&error];

後で numberOfRowsInSection で [allEvents count] を呼び出そうとすると、EXEC_BAD_ACCESS エラーが発生しました。

上記のコード行に self を追加して、フェッチ要求から配列を設定することで問題を解決できました。

    self.allEvents = [context executeFetchRequest:eventFetchRequest error:&error];

なぜこれが機能したのか誰でも説明できますか? 私は似たような状況に遭遇したことがあり、何が起こっているのか知りたいです。

ありがとう。

4

1 に答える 1

2

ほとんどの場合、オブジェクトの「allEvents」プロパティは保持プロパティであるため、最初のシナリオでは配列は保持されておらず、アクセスするまでに割り当てが解除されています。

于 2011-02-07T17:58:53.980 に答える