2012-03-21 1 views
0

私はここで少し修正しています。アプリケーションは、Core Dataを検索し、現在のビューに追加される50以上の新しいUIViewControllerサブクラスを使用して、それを画面に表示します。新しい検索が行われると、これらのVCはビューから削除され、解放される必要があります。しかし、私はVCの参照を保持しません。サブビューコントローラーをたくさん使用しているときにリリースを処理するにはどうすればいいですか?

私はそれらを保持する配列を試しましたが、うまくいかないようです。私はそのようなことをどうやって扱うのですか?

for (UIView *view in scrollView.subviews) { 
    [view removeFromSuperview]; 
} 

[gridVCs removeAllObjects]; 

int numItems = [searchResults count]; 
int n = 0; 

for(Plant *plant in searchResults) 
{ 
    GridViewCellController *gridVC = [[GridViewCellController alloc] initWithNibName:@"GridViewCellController" bundle:nil]; // !!! XXX 

    [gridVC setPlant:plant]; 
    [gridVC setSearchVC:self]; 
    gridVC.label.text = plant.naamnl; 
    [gridVC.imageView setImage:[UIImage imageWithContentsOfFile:foto_url]]; 

    [scrollView addSubview:gridVC.view]; 
    [gridVCs addObject:gridVC]; 

    n++; 
} 

ご協力いただきありがとうございます。

答えて

0

私は作業していたプロジェクトで同様の問題が発生しました。新しいUITableViewCellを作成するたびに、UIViewControllerを作成し、ビューコントローラを配列に追加して、 [UITableViewCellタグ]を配列のビューコントローラのインデックスに追加します。 [UITableView dequeTableViewCell ...]がUITableViewCellを返した場合、私はそのビューコントローラのインデックスとして[UITableViewCellタグ]を使用してUIViewControllerを取得することができますが、ビューコントローラにはメソッドがありました。私は一度に1つのUITableViewCellしか見ることができなかったので、2つのUIViewControllerが必要でした。私は、UITableViewを上下にずらして横にスクロールさせるためにトリックを使用しました。

0

​​を呼び出すと、配列内の各オブジェクトのrefCountが-1に減少しますが、それでもなお正です。

GridViewCellController *gridVC = [[GridViewCellController alloc] initWithNibName:@"GridViewCellController" bundle:nil]; 
... 
[gridVCs addObject:gridVC]; 
[gridVC release]; 
:あなたはそれを作成したときに毎回 gridVC放出しないため、

あなたがリークがたくさんあります

関連する問題