2

あるテーブルから UITableViewCell プロトタイプをデキューして別のテーブルで使用しても安全ですか?

他の UITableView に UITableViewCell を表示したい場合、プロトタイプ型のセルが指定されているテーブルから再利用可能なセルを dequeueReusableCellWithIdentifier するだけです。つまり、それらが表示される UITableView ではありません。

正常に動作しているようで、ログにエラーは見られませんでしたが、これまでに見たことがないため、奇妙な問題が発生する可能性があるのではないかと心配しています.

各セルに個別のペン先を使用してこれを実装するだけですか? それとも、このアプローチは問題ないですか、悪い習慣ですか、それとも危険ですか?

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
if (self.prototypesTableView == tableView) {
        cell = [self.prototypesTableView dequeueReusableCellWithIdentifier:cellType];
    }
    else if (self.otherTableView == tableView) {
        cell = [self.otherTableView dequeueReusableCellWithIdentifier:cellType] ?: [self.prototypesTableView dequeueReusableCellWithIdentifier:cellType];
    }
}
4

2 に答える 2

1

メモリ内の各テーブル ビューには、テーブル ビュー セルの独自のキューがあると確信しています。

テーブル ビュー (およびそれをホストするビュー) が消えると、それに関連付けられているすべてのオブジェクトが解放されます (ここでは ARC を想定しています)。2 つのテーブルを持つ 1 つのビューを持つことは重要ではありません。各テーブルには、デキューするセルの独自のコレクションがあります。

私自身のコードでは、UITableViewCellあるテーブルから次のテーブルへと同じカスタム " " を頻繁に再利用しています。カスタム UITableView セル (XIB ファイル内の唯一のオブジェクト) を登録するには、次のようにします。

UINib * nib = [UINib nibWithNibName: @"SomeVeryCustomCell" bundle: nil];
if(nib)
{
    [myTableView registerNib: nib forCellReuseIdentifier:@"SomeVeryCustomCell"];
}
于 2013-04-15T01:58:42.140 に答える