2012-02-19 119 views
0

我想知道對通知中心發出的通知做出迴應的最佳方式是什麼。在視圖控制器或子視圖中處理通知

這裏是一個例子: 我有一個模型接收來自服務器的更新。 每當收到新信息時,都會生成通知並通過NSNotificationCenter發佈。

有一個視圖控制器有很多(部分嵌套的)子視圖;根據收到的信息類型,我必須更新一個特定的子視圖。

對於我來說,目前有兩種解決方案:

  1. 視圖控制器成爲觀察員,並告訴更新基於該通知名稱的特定視圖。 [subviewx pleaseUpdate];

  2. 每個視圖都會註冊一個觀察者並取決於通知名稱。

1的缺點是vc必須處理所有通知,儘管他並沒有真正受到影響。

有沒有建議的方式來做到這一點?例如,負責的視圖控制器是否應處理所有通知,或者是否適合作爲觀察者,並且有點獨立。

感謝您的意見!

回答

1

一個有趣的問題 - 在技術上,兩種方法都會產生相同的結果。

但是,我個人傾向於在視圖控制器中保留通知處理,因爲這更接近iOS中的模型視圖控制器(MVC)模式。

在視圖控制器中發出通知的另一個好處是,您可能希望在應用中的其他位置重複使用您的視圖,並且當視圖開始響應他們不打算的通知時,您不希望發生不良副作用受到。整理視圖控制器中的所有通知也將使處理起來更容易 - 不要忘記,當您完成視圖時,您需要刪除通知觀察者,並且將所有的陳述集中在一個地方,分佈在多個班級。

相關問題