Я пишу приложение для iOS и использую библиотеку imageStore, чтобы лениво загружать изображения и кэшировать их в памяти. (https://github.com/psychs/imagestore)
В ViewController я создаю экземпляр imagestore:
imageStore = [ImageStore new];
imageStore.delegate = self;
Когда изображение загружено успешно, метод делегата вызова imagestore
- (void)imageStoreDidGetNewImage:(ImageStore*)sender url:(NSString*)url
что делает reloadData на просмотр таблицы для перерисовки ячеек.
Все работает хорошо. Но есть проблема: если ViewController didUnload (вернуться в контроллер навигации) и изображение загружены, приложение завершается сбоем, потому что метод imagestore вызывает метод выгруженного ViewController.
Я пытаюсь сделать следующее:
1) в ViewController я помещаю этот код в раздел viewDidUnload:
imageStore.delegate = nil;
imageStore = nil;
2) В imageStore я добавил проверку на nil:
if(delegate != nil) {
...call delegate method
}
Работает, но приложение все равно периодически вылетает.