0

同じカスタムサブクラスのすべてのオブジェクトで満たされている場所NSCollectionViewを使用して入力するがあります。コレクション ビューのアイテム プロトタイプは標準であり、サブクラス化されていません。コレクション アイテムのビューは、サブクラスのバインディングを使用して設定されます。[collectionView setContent:data];dataNSArrayNSObjectNSCollectionViewItemNSObject

問題は、ヒープショットを使用してアプリを分析すると、コレクション ビューでウィンドウを開くと、メモリが大幅に増加することがわかります。インストルメントは、このメモリの増加を[collectionView setContent:data];ラインに正確に示します。この記憶は決して取り戻されません。何か案は?

編集:次のようにデータオブジェクトにアクセスします:

NSArray *data = [[[[MWWeatherController sharedInstance] cachedData] objectForKey:[NSString stringWithFormat:@"%u",index]] objectForKey:@"daily"];
4

2 に答える 2

1

CollectionView KVO 準拠の ViewController を作成しましたか?

CollectionView の XIB は ArrayController ですか?

XIB の CollectionView を ArrayController の ArrangeObjects にバインドし、ViewController メソッド (setMyCustomObjectsArray など) を介してアイテムを設定します。これにより、ArrayController によって監視される配列が再度設定されます。

カスタム オブジェクトの dealloc メソッドでも、すべてを正しく解放してください。

于 2011-09-29T09:06:56.757 に答える
0

スコープ内のデータをリリースしていないと思います...「データ」オブジェクトを所有している場合は、必ずリリースしてください。

より適切に回答するためのいくつかのクエリ -

  1. 「データ」をどのように割り当てますか?
  2. 誰がそれをリリースしていますか?
  3. [collectionView setContent:データ]; この行の周りのコード スニペット
于 2011-09-28T06:34:06.440 に答える