2016-10-31 12 views
0

ContactItemCellという名前のカスタム連絡先セルとそのセルをレイアウトするxibファイルを定義するクラスがあります。テーブルビューを作成すると、このビューが開き、6つのContactItemCellクラスが作成されます。私が戻って彼らは割り当て解除されていない、と私は再び別の6が作成されたテーブルビューを開くときに移動されます。ナビゲーション、メモリリーク後にカスタムUITableViewCellが解放または再利用されない

- (UITableViewCell *)tableView:(UITableView *)tableView 
     cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    Contact* contact = [self contactAtIndexPath:indexPath]; 

    static NSString *cellID = @"ContactItemWithTagsForBothCell"; 
    ContactItemCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID]; 

    if (cell == nil) 
    { 
     NSArray *arr = [[NSBundle mainBundle] loadNibNamed:@"ContactItemWithTagsForBothCell" owner:nil options:nil]; 

     if (arr.count <= 0) 
     { 
      NSLog(@"couldnt find cell with ID: %@", cellID); 
      return nil; 
     } 

     cell = [arr firstObject]; 
    } 

    [cell configureCellForContact:contact]; 

    return cell; 
} 

がXIBファイル内fileownerはちょうど私がNSObjectの手段を想定していた空白に設定されている。ここではテーブルビューのコードです。私はクラスがポインタによって生きているかどうかを確認するための強力な参照サイクルを探してみましたが、何日もの調査の後に何も見たことがありません。私は本当に限界に挑戦しています。他に何ができるか、私は楽器を使っています。それは、彼らが一度に6つずつ作成されていることを理解したものですが、私は見つけることができません彼らに何を指しているのか。なぜこうなった?テーブルビューで何か問題がありますか?私がそうではなく、それが強力なリファレンスサイクルだと思うなら、どのようにしてこのContactItemCellを指し示すすべてのオブジェクトを見つけることができますか?前もって感謝します!

+1

メモリデバッガとは何ですか? http://useyourloaf.com/blog/xcode-visual-memory-debugger/ –

+0

私はこのチュートリアルを見ています。これまで私が一度もメモリデバッガについて聞いたことはありませんでした。私は本当にヒントをいただきありがとうございます。まもなくあなたに。 – Minimi

+0

@JoshHomannあなたは私の人生を救った、私はそのツールなしで問題を発見しただろう方法はありません。どうもありがとうございます。問題は、古いdevはベースuiviewcontrollerを上書きして配列にtableviewを追加したため、ビューコントローラが割り当て解除されたときにテーブルビューが解放されないということでした。私は驚くべきデバッグメモリグラフツールなしではこれを見つけられませんでした。あなたは最高の仲間です。 – Minimi

答えて

1

誰かが興味があった場合は、メモリデバッガを使用して、私が使用していたポッドでの強い参照サイクルがあることがわかりました。

関連する問題