iOS - Дизайнерское решение для обратных вызовов (используйте NSNotifications или AppDelegate) - PullRequest
0 голосов
/ 28 февраля 2012

Попытка принять проектное решение о том, как реализовать обратные вызовы из SDK Facebook для iOS. Прямо сейчас я создал вспомогательный (singleton) класс с именем FacebookHelper для хранения экземпляра Facebook и реализации методов делегата, таких как - (void)request:(FBRequest *)request didLoad:(id)result, - (void)fbDidLogout и т. Д.

С помощью этой опции я затем публикую уведомления при вызове методов делегата, и заинтересованные UIViewController могут подписаться на уведомления и затем обработать обновления.

Другой вариант, о котором я подумал, - это AppDelegate быть делегатом экземпляра Facebook, а затем реализовать все методы делегата, а из методов делегата сообщить видимому UIViewController (если это интересно), что какой-то Facebook произошло обновление.

В основном у меня есть только два получателя, которые заинтересованы в обновлениях Facebook; один - AppDelegate, а другой - ViewControllerX.

Ответы [ 2 ]

1 голос
/ 28 февраля 2012

Питер, я думаю, что способ уведомления может сработать лучше. И вот почему:

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

Используя метод уведомлений, вы можете просто размещать на своем объекте Facebook уведомления о событиях, и любой желающий может их прослушать. Это пропускает посредника и делает ваш код легко расширяемым, если вам когда-либо понадобится более одного viewControllerX, который интересуется тем, что делает Facebook.

Я имею в виду, все дело в стиле, но, на мой взгляд, это стоит того (может быть, немного),

0 голосов
/ 28 февраля 2012

Делегат приложения должен обрабатывать только методы делегата UIApplication. (Ну, имхо, но я думаю, вы найдете это довольно популярное мнение.)

Если вам нужен делегат Facebook, то это звучит как очень разумная вещь.

...