Pertanyaannya sederhana: Bagaimana Anda memuat custom UITableViewCell
dari file Xib? Melakukannya memungkinkan Anda menggunakan Interface Builder untuk mendesain sel Anda. Jawabannya ternyata tidak sederhana karena masalah manajemen memori. Utas ini menyebutkan masalah dan menyarankan solusi, tetapi merupakan pra-rilis NDA dan tidak memiliki kode. Inilah utas panjang yang membahas masalah ini tanpa memberikan jawaban yang pasti.
Berikut beberapa kode yang saya gunakan:
static NSString *CellIdentifier = @"MyCellIdentifier";
MyCell *cell = (MyCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:CellIdentifier owner:self options:nil];
cell = (MyCell *)[nib objectAtIndex:0];
}
Untuk menggunakan kode ini, buat MyCell.m / .h, subclass baru UITableViewCell
dan tambahkan IBOutlets
untuk komponen yang Anda inginkan. Kemudian buat file "Empty XIB" baru. Buka file Xib di IB, tambahkan UITableViewCell
objek, atur pengenalnya ke "MyCellIdentifier", dan atur kelasnya ke MyCell dan tambahkan komponen Anda. Akhirnya, hubungkan IBOutlets
ke komponen. Perhatikan bahwa kami tidak menetapkan Pemilik File di IB.
Metode lain menganjurkan pengaturan Pemilik File dan memperingatkan kebocoran memori jika Xib tidak dimuat melalui kelas pabrik tambahan. Saya menguji di atas di bawah Instrumen / Kebocoran dan tidak melihat kebocoran memori.
Jadi apa cara kanonik untuk memuat sel dari Xibs? Apakah kita menetapkan Pemilik File? Apakah kita memerlukan pabrik? Jika demikian, seperti apa kode untuk pabrik itu? Jika ada beberapa solusi, mari kita perjelas pro dan kontra dari masing-masing ...