2010-03-12 180 views
6

我有一個iPhone應用程序,它基本上是從API獲取信息(以XML格式,但最終可能是JSON)。結果對象通常顯示在視圖控制器(主要是表格)中。NSNotification與委託協議?

這裏的建築現在。

我有取從遠程服務器對象的不同的NSOperation類。這些NSOperation類中的每一個都將採用一種自定義的委託方法,該方法將在解析結果對象時觸發它們,然後在沒有更多結果可用時最終生成一個方法。因此,對於代表協議會是這樣的:

(void) ObjectTypeResult:(ObjectType *)result; 
(void) ObjectTypeNoMoreResults; 

我認爲解決的辦法效果很好,但我結束了一堆左右,然​​後我的視圖控制器有委託協議,以實現所有這些委託方法。我不認爲它很糟糕,但我一直在尋找更好的設計。

所以,我想使用NSNotifications刪除使用代表。我可以將該對象包含在通知的userInfo部分中,並僅在接收到對象後發佈對象,然後在不再有可用時發送最終事件。然後,我可能只是在每個視圖控制器的一個方法來接收所有的數據,在一個控制器使用多個對象時也是如此。†

因此,可以跟我的人分享一些優點/每種方法的利弊。我應該考慮重構我的代碼來使用事件而不是代表?在某些情況下,其他人會更好嗎?在我的情況下,我真的不想在多個地方收到通知,所以基於協議的代表可能是要走的路。

謝謝!

回答

5

其實,你的這個設計聽上去聲音。清晰的Cocoa方法使用委託,並且更傾向於將對象拋出。此外,以這種方式定義您的協議使得您的代碼非常明確且易於理解。總而言之:保持良好的工作