У меня есть класс:
.hObjective-C: Передача объекта инициализатор
@interface NoticesDataSource : NSObject <UITableViewDataSource>
@property (nonatomic,strong) NSMutableArray *items;
@end
.m
@implementation NoticesDataSource
...
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [[self items] count];
// return [_items count];
}
- (instancetype)initWithItems:(NSMutableArray *)items {
self = [super init];
[self setItems:items];
// _items = items;
return self;
}
- (instancetype)init {
self = [super init];
[self setItems:[self prepareItems]];
// _items = [self prepareItems];
return self;
}
- (NSMutableArray *)prepareItems {
NSMutableArray *items = [[NSMutableArray alloc] init];
...
[items addObject:item];
...
[items addObject:item];
return items;
}
...
@end
Проблема, когда встречается, метод tableView:numberOfRowsInSection:
называется. В этот момент items
есть nil
.
Что я делаю неправильно?
Я уже прочитал http://qualitycoding.org/objective-c-init/, https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmPractical.html и некоторые ответы stackoverflow, но я просто не могу понять, что является корнем моей проблемы.
Спасибо.
Вы уверены, что ваш инициализатор называется? (Установите контрольную точку для проверки.) – Drux
И «элементы» определены как «сильные». –
Да, я уверен. Я вызываю 'init' явно и устанавливаю точку останова. Это называется. – seelts