我应该在哪个ViewController上实现FacebookSDK的removeObserver?

时间:2012-11-07 16:21:27

标签: ios xcode facebook

我正在将iOS的SDK SDK应用到我的应用程序中。但是,有两个函数可以注册和取消注册通知:

来自Facebook's login to facebook with ios

  

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

     

[[NSNotificationCenter defaultCenter]
       的addObserver:自
       选择:@选择(sessionStateChanged :)
       名称:FBSessionStateChangedNotification
       对象:nil];

  

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

     

[[NSNotificationCenter defaultCenter] removeObserver:self];

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

但我不确定是否以及如何实现unregister的removeObserver命令,因为appDlegate的applicationDidReceiveMemoryWarning 不可用

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

1 个答案:

答案 0 :(得分: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推荐的......