сервисные обработчики iPhone Objective-C - PullRequest
0 голосов
/ 20 апреля 2010

Я разработчик as3, я привык использовать обработчики каждый раз, когда запускаю событие, и мне интересно, как лучше всего это сделать в Objective C.

Допустим, я хочу позвонить в другой сервис из моего бэкэнда.

В as3 было бы что-то вроде того, чтобы остаться на финише:

service.addEventListener (Event.COMPLETE, handler_serviceDidFinished) service2.addEventListener (Event.COMPLETE, handler_serviceDidFinished2)

Но как я могу сделать то же самое в Objective C?

Проблема в том, что я уже создал протоколы и делегаты, но как я могу отделить каждый ответ от сервера?

Например:

-(void)callService:( NSString * )methodName withParameters:(NSMutableDictionary *) parameters
{
...
    if (self.delegate != NULL && [self.delegate respondsToSelector:@selector(serviceDidFinishSuccessfully:)]) {
        [delegate serviceDidFinishSuccessfully:data];
    }
}

Хорошо, я пытаюсь создать общий делегат здесь, так как я могу отделить каждый ответ для каждого сервиса?

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

Есть идеи?

Ответы [ 2 ]

2 голосов
/ 20 апреля 2010

Вас могут заинтересовать уведомления Objective-C. По сути, они позволяют вам использовать «центр уведомлений», в который вы «публикуете» разные сообщения; затем все классы обратного вызова / делегата могут «зарегистрироваться» для определенных уведомлений, чтобы они знали, когда что-либо делать. Таким образом, все, что нужно вашему бэкэнду, это опубликовать уведомление и не беспокоиться о том, отвечают ли определенные делегаты селекторам и т. Д. * и NSNotification ссылки на классы) для более.

0 голосов
/ 20 апреля 2010

Посмотрите на делегат NSURLConnection - общая схема состоит в том, чтобы передать объект, вызывающий вас в качестве первого параметра, именно так, чтобы вы могли различить несколько объектов, для которых вы являетесь делегатом.

Уведомления полезны для указания завершения задачи, но не очень хороши для обработчиков, которые должны влиять на поток обработки объекта.

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