iOS проверяет, существует ли делегат перед вызовом метода

Я пишу приложение для iOS и использую библиотеку imageStore для отложенной загрузки изображений и кэширования их в памяти. (https://github.com/psychs/imagestore)

В ViewController я создаю экземпляр imagestore:

imageStore = [ImageStore new];
imageStore.delegate = self;

Когда изображение загружается успешно, imagestore вызывает метод делегата

- (void)imageStoreDidGetNewImage:(ImageStore*)sender url:(NSString*)url

, который выполняет reloadData в tableview для перерисовки ячеек. {{1 }} Все работает хорошо. Но есть проблема: если ViewController didUnload (вернуться в контроллер навигации) и изображение загружено, приложение завершает работу с ошибкой, потому что в хранилище изображений вызывается метод выгруженного ViewController.

Я пытаюсь сделать следующее: 1) в ViewController я помещаю этот код в раздел viewDidUnload:

imageStore.delegate = nil;
imageStore = nil;

2) В imageStore я добавил проверку на ноль:

if(delegate != nil) {
  ...call delegate method
}

Это работает, но все равно периодически происходит сбой приложения .

5
задан Vitaly Baev 2 November 2011 в 06:09
поделиться