2010-04-27 102 views
2

我正在觀察UINavigationControllerWillShowViewControllerNotificationUINavigationController以跟蹤當前視圖控制器何時被彈出,如this後的建議。UINavigationControllerWillShowViewControllerNotification是否可以拒絕我的應用程序?

該通知的字面上沒有任何引用,Google搜索將鏈接到該帖子。

這是否意味着這是一個私人通知,我的應用程序可能會被拒絕?

更糟糕的是,這是否意味着我不應該相信該通知的工作方式,因爲它可能會在未來的SDK版本中崩潰?

回答

4

有問題的通知實際上是隱含在文檔中引用:

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated 

委託方法是,至少在可可的Mac OS X通常伴隨通知(當然,很多時候,反正)。

因爲它是一個無證的功能,因此應該小心處理。如果可能,請改用委託方法。

然而:如果它出現在報頭中,並且它的工作原理,和伴隨有委託方法;這可能是蘋果方面的文件監督;並且使用它是安全的。

我建議提交一個bug,看看你在哪裏;至少如果重構你的應用程序直接使用委託將是過於繁瑣(比提交錯誤更麻煩)。

+0

如果有人真的對這個屬於「私人API」傘下的偏執狂,他/她可以實現委託方法,然後爲其他對象發起自定義通知以觀察。 – 2010-04-27 21:08:16

+0

甚至不需要是自定義的;它可能只是'UINavigationControllerWillShowViewControllerNotification'。 :) – 2010-04-27 21:09:38

+0

通知本身沒有出現在頭文件中 - 沒有常量,我使用實際的NSString作爲它的名字。而且,實際上,這與委託方法不同。當我收到通知時,導航堆棧仍然完好無損,並且在用戶信息字典上都有最後一個可見導航器和下一個可見導航器。所以我有從堆棧彈出哪個視圖控制器 - 我不能單獨使用委託方法。 – leolobato 2010-04-28 11:55:32

相關問題