0

我正在将 Facebook 的 iOS SDK 实施到我的应用程序中。然而,有两个函数应该注册和注销通知:

Facebook 的登录到 ios 的 facebook

viewDidLoad方法中,通过将以下代码添加到方法的末尾来注册您在应用程序委托中定义的会话更改通知:

[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(sessionStateChanged:)
name:FBSessionStateChangedNotification
object:nil];

通过将以下代码添加到didReceiveMemoryWarning方法的末尾来取消注册通知:

[[NSNotificationCenter defaultCenter] removeObserver:self];

由于我有很多视图控制器并且它们都应该使用 facebook 的 API,我想我应该在applicationDidFinishLoadingWithOptions中实现注册/取消注册方法(register用于通知)

但我不确定是否以及如何实现unregister'removeObserver 命令,因为appDelegate无法使用applicationDidReceiveMemoryWarning 。

  • DidReceiveMemoryWarning 是否访问了 App 的所有 viewController?
  • 仅在我的一个 viewControllers 中取消注册就足够了吗?
4

1 回答 1

1

应用程序委托确实收到内存警告:

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIApplicationDelegate_Protocol/Reference/Reference.html

如果没有,另一种选择是使用通知中心:

NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
[center addObserver:self
           selector:@selector(whatever:)
               name:UIApplicationDidReceiveMemoryWarningNotification
             object:nil];

综上所述,在我看来,在内存警告中删除观察者是不合适的。您将在什么时候恢复它?但是,嘿,如果那是 Facebook 推荐的……

于 2012-11-07T16:33:49.263 回答