FBRequestDelegate работает только на AppDelegate? - PullRequest
5 голосов
/ 29 декабря 2010

Я хочу инкапсулировать все мои взаимодействия с Facebook в классе FacebookFacade, чтобы держать вещи в чистоте и порядке.У меня есть экземпляр класса iOS SDK Facebook в моем FacebookFacade.

Моя проблема в том, что когда я выполняю вызов API Graph внутри фасада, например:

    [self.facebook requestWithGraphPath:@"me" andDelegate:self]; 

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

Фактически, единственный способ получить другие методы FBRequestDelegate для вызова - это поместить всю мою логику в Facebook в AppDelegate и сделать мой AppDelegate FBRequestDelegate.

Почему это так?Я что-то здесь упускаю?Я определенно не хочу использовать AppDelegate в качестве моего FBRequestDelegate, так как не хочу путать цель AppDelegate.

Спасибо.

Ответы [ 3 ]

7 голосов
/ 10 октября 2011

Была такая же проблема сегодня днем. Наконец-то решил это: Вы должны сделать свой запрос FBRequest из главной ветки. В противном случае базовый NSURLConnect (в объекте facebook) никогда не запускается.

2 голосов
/ 01 июня 2011

Вы можете поделиться своим appDelegate с другими контроллерами в вашем приложении.

Я решил эту проблему, импортировав мой AppDelgate (который создает и распределяет в нем объект facebook), т.е.1004 *

Таким образом, я могу создать указатель для указания на объект делегата и использовать методы facebook там, где мне нужно.

-(void) someFunction{
      MyAppDelgate *sharedAppDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate]
      [sharedAppDelegate.facebook dialog:@"feed" andDelegate:self]; 
}

Дайте мне знать, если это не сработает

1 голос
/ 29 декабря 2010

Убедитесь, что исходный объект не освобождается, пока Facebook работает в фоновом режиме. Если это так, когда facebook отправляется для вызова делегата и находит его равным нулю или обнаруживает ошибку, он не будет перезванивать.

...