objective-c - iOS – 回调的设计决策(使用 NSNotifications 或 AppDelegate)

标签 objective-c ios facebook uiapplicationdelegate nsnotificationcenter

尝试就如何从适用于 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/

相关文章:

objective-c - Swift 应用迁移问题

ios - UITextField 上的无效上下文 0x0 (Xcode 5)

ios - 为什么我的 Xcode 无法验证 swift iOS 项目

iphone - 如何触发属性更改的方法?

ios - grabCut 中的错误参数(图像必须具有 CV_8UC3 类型)

Facebook 应用程序 oauth 对话框错误

c++ - 如何将 Objective C 代码添加到 FireBreath 项目?

ios - 在 objective-c 中实现抽象类时,设置BOOL的默认值TRUE

php - 被 Facebook Chat API 标记为垃圾邮件的消息

javascript - Facebook 即时游戏 : Stuck at loading