1

Interface Builder を使用して作成した多数のカスタム テーブル セルとビューがあります。

インターフェイス ビルダーでは、すべてが同様に設定されます。テーブルセルといくつかの他のUILabelsと背景画像があります

nib が NSObject の場合はオブジェクトの所有者 テーブル セルのクラスは、テーブル セルのクラスの名前です

コードでテーブルセルを作成する方法は次のとおりです。

SectionedSwitchTableCell *cell = nil;
NSArray *nibs = [[NSBundle mainBundle] loadNibNamed:kSectionedSwitchTableCellIdentifier owner:owner options:nil];
for(id currentObject in nibs)
{
    if([currentObject isKindOfClass:[SectionedSwitchTableCell class]])
    {
        cell = (SectionedSwitchTableCell *)currentObject;
        break;
    }
}
return cell;

私のカスタムテーブルヘッダーにはこれがあります

    NSArray *nibs = [[NSBundle mainBundle] loadNibNamed:@"CustomTableHeader" owner:self options:nil];
    for(id currentObject in nibs)
    {
        if([currentObject isKindOfClass:[CustomTableHeader class]])
        {
           return header
        }
    }

カスタム ビューの .h および .m ファイルでは、背景画像 UIImageView を除くすべてに IBOutlet と @property を設定しています。IBOutlet と @property を持つものはすべて @syntheized され、.m ファイルでリリースされます。

Leaks は、これらのカスタム ビュー オブジェクトを作成するときに CALayer でメモリ リークがあることを示しています。これらのカスタム ビュー オブジェクトを作成するとき、ここで何か間違ったことをしていますか? 私は、これらの漏れがどこから来ているのかを突き止めようとして、髪を引き裂いているようなものです.

補足として、これらのカスタム ビューで定義された UIImageView 背景画像がありますが、.h ファイルと .m ファイルでプロパティと IBOutlets を定義していません。それらを定義しても、リークを実行するときに違いはありませんが、正しいことをしているかどうかを確認したかっただけです。

どんな入力でも非常に役立ちます。ありがとう :)

4

1 に答える 1

1

カスタム セルの xib ファイルを確認し、識別子 (kSectionedSwitchTableCellIdentifier) をセルに設定していることを確認してください。私は同様の問題を抱えており、これで修正されました。

于 2011-09-06T03:18:10.053 に答える