Как я могу получить ответ от асинхронного запроса к одиночке? - PullRequest
2 голосов
/ 25 мая 2009

Следующее касается приложения для iPhone.

Я хочу использовать синглтон для обработки асинхронного запроса URL. Я уже рассмотрел это, но как лучше всего на практике написать, как отправить сообщение, когда он будет получен? Мне нужно, чтобы ответ был возвращен в класс, который первоначально назывался синглтоном.

Могу ли я передать указатель на вызывающий класс в синглтон вместе с методом делегата (вызывающего класса) для вызова при получении ответа?

Спасибо

1 Ответ

2 голосов
/ 25 мая 2009

Прежде всего, синглтоны, как правило, плохой дизайн, и это похоже на ситуацию, когда вам не нужен синглтон. См. Синглтоны - патологические лжецы Мишко Хевери и другие статьи в его блоге. (Надеюсь, это не выглядит высокомерно, избавление от синглтона, вероятно, улучшит ваш дизайн и облегчит кодирование.)

Во-вторых, если я правильно понимаю ваш вопрос, вы можете передать синглтону селектор, который должен быть вызван после того, как синглтон получит данные. API в классе singleton может выглядеть следующим образом:

- (void) download: (NSURLRequest*) request andTell: (id) delegate to: (SEL) doThis;

Затем, после того как вы закончите загрузку данных, вы сделаете:

[delegate performSelector:doThis withObject:receivedData];

Это отвечает на вопрос?

...