Как построить «Image Store» в iOS? - PullRequest
0 голосов
/ 09 января 2012

Я создаю Image Store для своего приложения, в основном это синглтон, который управляет загрузкой и кэшированием изображений (два уровня NSCache и Базовые данные).

Мне было интересно, могу ли я использовать блоки вместо делегатов, я имею в виду, что для одного и того же изображения может быть несколько запросов, я хочу обновить все ожидающие запросы, «вызвав» блок, который они предоставили при вызове.

Можно ли сохранить блок в NSArray и вызвать его, когда я скачал изображение? Имеет ли это смысл?

Что если блок сработает после освобождения вызывающего объекта?

Спасибо

1 Ответ

0 голосов
/ 09 января 2012

Если у вас есть список наблюдателей для события, вы должны вместо этого посмотреть NSNotification s.

Каждый раз, когда изображение загружается, ваш синглтон должен делать что-то вроде

NSDictionary *info = [NSDictionary dictionaryWithObjectsAndKeys:
                      image, @"image", 
                      originalURL, @"imageURL",
                      nil];

[[NSNotificationCenter defaultCenter] postNotificationName:@"imageDownloaded" object:self userInfo:info];

и все, кто интересуется этим изображением, должны получить уведомление об этом.

Вы можете расширить этот шаблон, включив в него также уведомления о прогрессе и неудачных загрузках:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...