Что такое соглашение или лучшая практика?
Я бы посоветовал вам загрузить его лениво:
- (FlyerListTable*)flyerListTable
{
if (_flyerListTable == nil)
_flyerListTable = [[FlyerListTable alloc] initWithNibName:@"FlyerListTable" bundle:nil];
return _flyerListTable;
}
Не забудьте выпустить его в dealloc.
Затем используйте его, когда выделена строка
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
FlyerListTable* detail = [self flyerListTable];
detail.department = [categories objectAtIndex: indexPath.row];
detail.promotions = [items valueForKey:detail.department];
[self.navigationController pushViewController:detail animated:NO];
}
Когда я его отслеживал, этот метод dealloc никогда не вызывался.
Если deallocне вызывается в вашем примере это означает, что какой-то другой объект сохранил его.Постарайтесь выяснить, какой объект может его сохранить, прежде чем вносить какие-либо изменения.Вы можете переопределить метод retain для этой цели:
- (id)retain
{
return [super retain];
}
Установите точку останова, чтобы увидеть стек вызовов.Вы не должны использовать ARC, конечно.
Удачи!