2010-12-08 22 views
3

私がここでやっていることは正しいと確信していますが、私はちょうど[cell autorelease]が自分のセルをあまりにも早く解放していないことを確認したいと思いますし、dequeueReusableCellWithIdentifierは再使用を待っています。私の理解は、待ち行列は、実際のオブジェクトではなく、セルのための青写真(ペン先のようなビット)を格納するだけで、別のエンティティであるということです。UITableViewCell、デキューと自動解放?

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"LOC_ID"]; 
    if(cell == nil) { 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"LOC_ID"]; 
     [cell autorelease]; 
    } 
    NSUInteger row = [indexPath row]; 
    //id thisLocation = [locationList objectAtIndex:row]; 
    [[cell textLabel] setText:[NSString stringWithFormat:@"R_%u", row]]; 
    return cell; 
} 

EDIT:は、私が寿命と細胞に関して、何が起こるかに興味を持って明確にします。私はそれらを割り当て、次にそれらを自動解放することを理解しています。そして、テーブルはcellForRowAtIndexPathから返された後にセルの所有権を取得しますか?彼らは10人がUITableViewに属しているのですか、あるいは私は混乱していますか?

答えて

2

いいえ実際には識別子ごとにセルオブジェクトを格納しています。

テーブルが最初に作成されると、セルはゼロから作成されます。 したがって、テーブルビューをスクロールすると、新しいセルは識別子に基づいてデキューされます。パフォーマンス上の理由から、たとえば、セルにテキストを設定することで再利用できます。新しいセルを一から作成する必要はありません。

関連する問題