SORU
28 Ocak 2010, PERŞEMBE


iPhone - reuseİdentifiers (UİTableViewCell) Nedir?

Resmi belgeler:

Yeniden tanımlayıcı tablo-manzara temsilci olarak (performansı artırmak için) bir tablo görünümü birden çok satır için yeniden niyetiyle oluşturduğu UİTableViewCell bir nesne ile ilişkilidir. İnitWithFrame cep nesne:reuseİdentifier atanır: ve olamaz bundan sonra. değiştirilmesi Nesne şu anda yeniden hücreler, yeniden kendi kimliği ile her bir sıranın (liste) korur ve onlara dequeueReusableCellWithİdentifier temsilci için bulunmaz bir UİTableView: yöntem.

http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UITableViewCell_Class/Reference/Reference.html#//apple_ref/occ/instp/UITableViewCell/reuseIdentifier

Bunu anlamıyorum. Peki, UİTableViewCells oluşturmak ve mümkün olduğunca çok sayıda yeniden yenilerini (ya da onun gibi bir şey) yapmak yerine, deneyin bence, ana fikri anlıyorum. Ama tam olarak ne ya da bir hücre yeniden kullanılabilir olup olmadığını belirler? Eğer iki özdeş (görme) hücreleri, ama farklı metinler (de tamamen aynı değiller sanırım) var, ikisi de aynı kimliğe sahip olabilir? Ya da farklı olanlar vardır. Ya ne durum farklı tanımlayıcılar kullanmak gerekiyor mu?

Kimseye ya da bir yere açıklık bağlayabilir miyim?

CEVAP
15 ŞUBAT 2010, PAZARTESİ


Tamam, bu işler iyi olacağına inanıyorum

Bu tableView için dequeueReusableCellWithİdentifier kullanarak, büyük ölçüde işler daha hızlı olur. Bir sürü hücrenin örneklemek yerine, sadece gerektiği kadar örneğini, yani çok (bu otomatik olarak gerçekleştirilir). Eğer "Henüz görsel temsillerine yok, yenilerini başlatmak yerine, mevcut olanları yeniden." hücrelerin bulunduğu listede bir alana kaydırma eğer

Bunu yaparak bunu kendiniz deneyebilirsiniz:

static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil)
{
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    NSLog(@"new one");
}
else
{
    NSLog(@"old one");
}

Unutma, sen sadece dequeueReusableCellWithİdentifier varsa Eğer bir hücre dönmek istiyorum. Eğer bir hücre yeniden olacaksa, bu durum için doğru olduğundan emin olun. Kurallar bu yüzden var. Genellikle, tek ihtiyacınız olacak. Ama hücreleri birkaç farklı türde kullanan bir liste olabilir, ve bu durumda, onları ayrı tutmak için farklı reuseİdentifiers sağlayarak olurdu. Aksi takdirde hücre başka bir muamelesi olan bir hücre (örneğin, istediğin özel bir yerine UİTableView hücre) elde sonunda olabilir.

Yani Kısacası anladığım kadarıyla, bu tür bir sınıf anlamına geldiği hücrelerinin farklı, farklı reuseİdentifiers kullanın. Sadece standart hücreler, büyük olasılıkla sadece bir reuseİdentifier gerekiyor.

Bu tasarım deseni object pooling olarak bilinir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Animation Workshop

    Animation Wo

    8 NİSAN 2010
  • metal571

    metal571

    30 Mayıs 2006
  • TWiT Netcast Network

    TWiT Netcast

    27 EKİM 2005