Питання просте: як ви завантажуєте власні UITableViewCell
файли з Xib? Це дозволяє використовувати Interface Builder для проектування ваших комірок. Відповідь, мабуть, не проста через проблеми з управлінням пам'яттю. Цей потік згадує проблему та пропонує рішення, але це попередньо випущений NDA і не має коду. Ось довга нитка, яка обговорює це питання, не даючи остаточної відповіді.
Ось який код я використав:
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];
}
Щоб використовувати цей код, створіть новий підклас MyCell.m / .h UITableViewCell
та додайте IBOutlets
потрібні компоненти. Потім створіть новий файл "Порожній XIB". Відкрийте файл Xib в IB, додайте UITableViewCell
об’єкт, встановіть його ідентифікатор на "MyCellIdentifier", а його клас встановіть на MyCell та додайте компоненти. Нарешті, підключіть IBOutlets
до компонентів. Зауважте, що ми не встановили власника файлу в ІБ.
Інші методи виступають за встановлення власника файлу та попереджають про витоки пам'яті, якщо Xib не завантажується через додатковий заводський клас. Я перевірив вищезазначене в розділі "Інструменти / витоки" і не побачив витоків пам'яті.
То який канонічний спосіб завантаження комірок з Xibs? Чи встановити власника файлу? Чи потрібна нам фабрика? Якщо так, то як виглядає код заводу? Якщо є кілька рішень, давайте уточнимо плюси і мінуси кожного з них ...