Я пытаюсь централизовать сетевой код моего приложения.По сути, в любом из различных мест, где требуется информация от сервера, я создаю объект serverRequest моего класса ServerRequest для получения информации.Когда ServerRequest завершен, он должен отправить информацию обратно вызывающему объекту.Конечно, это должно работать асинхронно - я не хочу, чтобы мое приложение останавливалось, пока оно ждет.
Этот возврат информации - сложная часть.Кажется, мои варианты делегирования и уведомления.Насколько я могу судить, у них обоих есть свои проблемы:
ДЕЛЕГАЦИЯ: я выдавал себя за делегата объекта serverRequest.Проблема заключается в том, что если я освобождаюсь до завершения запроса, serverRequest будет отправлять сообщения об освобожденном объекте, и моя программа аварийно завершит работу.Чтобы предотвратить это, мне нужно было бы отслеживать все мои запросы к серверу (их может быть больше одного) и сообщать их всем в моем методе dealloc, чтобы я больше не получал сообщений.Все это возможно, но это, конечно, похоже на боль.
УВЕДОМЛЕНИЕ: Похоже, много работы для передачи информации.Я должен добавить себя в качестве наблюдателя в центр уведомлений, а затем удалить себя при освобождении.Кроме того, я должен передать в ServerRequest информацию о том, какие уведомления отправлять, когда это будет сделано.И мне ServerRequest нужно запихнуть полученные данные в NSDictionary, из которого я затем получаю их обратно после их передачи.
Оба метода должны работать, но они оба кажутся огромными усилиями только для того, чтобыпопросите ServerRequest разбудить вызывающий код и передать ему объект.Я думаю, что уведомление немного более гибкое, немного менее болезненное и немного менее вероятное, чтобы вызвать сбой, но я не очень доволен любым подходом.Любая обратная связь будет оценена.Спасибо.