У меня есть синглтон, который загружает данные из внешней базы данных (PTDatabaseAccsesser).
Когда все данные были загружены, синглтон должен вызвать делегата, который является подклассом UITableViewController. Тем не менее, я получаю эту ошибку:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason:
'-[__NSCFType doneDownloadingData]: unrecognized selector sent to instance...
Вот как я устанавливаю делегата для подкласса UITableViewController:
- (void)viewDidLoad {
[[PTDatabaseAccesser sharedInstance] setDelegate:self];
NSLog(@"%@", [[PTDatabaseAccesser sharedInstance] delegate]);
}
NSLog показывает, что здесь все правильно.
Это код из PTDatabaseAccsesser, который вызывает делегата:
NSLog(@"%@", [self delegate]);
[[self delegate] doneDownloadingData];
NSLog здесь показывает, что делегат того же типа, что и в сообщении об ошибке выше.
Вот как я создаю синглтон:
static PTDatabaseAccesser *sharedInstance;
+ (PTDatabaseAccesser *)sharedInstance {
@synchronized(self) {
if (!sharedInstance) sharedInstance = [[PTDatabaseAccesser alloc] init];
}
return sharedInstance;
}
+ (id)alloc {
@synchronized(self) {
sharedInstance = [super alloc];
}
return sharedInstance;
}
Я убедился, что синглтон работает, используя точки останова в двух реализациях метода выше.