2012-11-07 59 views
0

我正在爲我的應用程序實施Facebook的iOS SDK。然而,有兩個函數,都應該註冊和註銷的通知:我應該在哪個ViewController上實現FacebookSDK的removeObserver?

Facebook's login to facebook with ios

viewDidLoad中方法

,註冊您的應用程序委託中加入定義會話更改通知此代碼到方法的結束:

[[NSNotificationCenter defaultCenter]
的addObserver:自
選擇:@selector (sessionStateChanged :)
name:FBSessionStateChangedNotification
object:nil];

註銷對於通過添加以下代碼到didReceiveMemoryWarning所述方法結束時的通知:

[[NSNotificationCenter defaultCenter] removeObserver:自];

因爲我有好幾個視圖控制器和所有的人都應該使用Facebook的API,我想我應該實現(用於register的通知)

applicationDidFinishLoadingWithOptions登記/註銷方法但我不知道是否以及如何實施unregister的removeObserver命令,因爲對於AppDelegate,applicationDidReceiveMemoryWarning爲不可用

  • DidReceiveMemoryWarning是否訪問應用程序的所有viewControllers?
  • 僅僅在我的一個viewControllers中取消註冊就足夠了嗎?

回答

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的建議...

+0

gosh,我沒有找到didReceiveMemoryWarning函數在文檔中,因爲最糟糕的錯誤(匹配情況是!):D所以這是一個偉大的觀點。爲什麼在該功能中刪除通知不是一個好主意? – Ted

+0

那麼,如果你開始觀察視圖加載時的通知,那麼我認爲該視圖需要它。如果你在視圖可見的時候刪除了觀察者,那很奇怪,因爲正如我所說的那樣,視圖需要它...... – tarmes

相關問題