Этот метод используется для определения того, будет ли ваше приложение «обрабатывать» переданный ему URL-адрес. Например, ваше приложение может обрабатывать определенный URL-адрес «схемы», а затем выбирать во время выполнения, будет ли оно обрабатывать определенный URL-адрес. Если вы вернете НЕТ, он перейдет к другому приложению, которое также может обрабатывать ту же схему URL. Хотя в случае Facebook iOS SDK ваше приложение будет единственным приложением, обрабатывающим схему URL.
Когда вы пытаетесь войти в Facebook, SDK передает значения либо в приложение Facebook, либо на веб-сайт Facebook, и включает URL-адрес обратного вызова, чтобы можно было завершить процесс авторизации. Без этого метода в делегате приложения этот обратный вызов не будет работать должным образом.
Для получения дополнительной информации о oAuth см .:
http://developers.facebook.com/docs/authentication/
Во-вторых, это более важный вопрос, чем просто SDK Facebook. Это связано с основной архитектурной проблемой. Вы можете включить объект Facebook в делегат приложения, а затем ссылаться на него в контроллере представления. Это самый простой метод. В контроллере вида вы можете просто сделать следующее:
Facebook *facebook = [(YourAppDelegate *)[UIApplication sharedApplication] delegate] facebook];
Эта опция не всегда идеальна, потому что она заставляет приложение делегировать дамп для множества общих экземпляров.
Другой вариант - попросить делегата приложения передать объект Facebook контроллеру представления при его создании (у контроллера представления будет свойство для объекта Facebook - и затем делегат приложения передаст его контроллеру представления после инициализации. ).
MyViewController *vc = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
vc.facebook = self.facebook;
Существуют также другие варианты для совместного использования экземпляров классов, такие как платформа Objection iOS, но они немного более продвинуты.