尝试就如何从适用于 iOS 的 Facebook SDK 实现回调做出设计决策。现在,我创建了一个名为 FacebookHelper 的帮助器(单例)类来保存 Facebook 实例并实现委托(delegate)方法,例如 - (void)request:(FBRequest * )request didLoad:(id)result
、- (void)fbDidLogout
等等。
使用此选项,我可以在调用委托(delegate)方法时发布通知,感兴趣的 UIViewController 可以订阅通知,然后处理更新。
我想到的另一个选择是让 AppDelegate
成为 Facebook
实例的委托(delegate),然后实现所有委托(delegate)方法,并从委托(delegate)方法通知可见的 UIViewController
(如果有兴趣的话)Facebook 已经发生了一些更新。
基本上我只有两个对 Facebook 更新感兴趣的接收者;一个是 AppDelegate
,另一个是 ViewControllerX
。
最佳答案
Peter,我认为通知方法可能效果更好。原因如下:
使用委托(delegate)方法时,您不能让多个 View Controller 将自己指定为 facebook 单例委托(delegate)。因此,您必须有一个委托(delegate)(您建议的应用程序委托(delegate)),然后该委托(delegate)充当中间对象,然后通知其他对象发生了某件事。这似乎不必要地复杂......
使用通知方法,您可以让 Facebook 对象发布有关事件的通知,任何感兴趣的人都可以收听。如果您想要多个对 facebook 正在做的事情感兴趣的 viewControllerX
,这会跳过中间人,并使您的代码可以轻松扩展。
我的意思是,这都是风格问题,但就其值(value)而言(也许不多哈哈)这是我的观点。
关于objective-c - iOS – 回调的设计决策(使用 NSNotifications 或 AppDelegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9473717/