我在我的應用程序中使用了大量非常小的網絡服務,並且我已經倒了幾條不按比例縮放或工作的道路。在NSThreaded設計中的授權? (iPhone)
設計方法我在想: viewController的任務是從一般的webServicesClass中請求一組數據,這個任務是在一個新的NSThread中啓動的 - >這將實例化一個對象,該對象只檢索xml並將其返回到webServicesClass - > webServicesClass現在實例化一個對象,該對象完全可以解析來自此特定Web服務的一些XML。解析器然後返回一個很好的實體對象到webServiceClass。 WebserviceClass現在需要通知viewController這些數據。
的的viewController實現webServiceClassDelegate和一些委託方法,看是否按計劃進行Web服務請求去了。例如 - (void)aWebserviceFailed和 - (void)aWebserviceSuccess。
0.5由於WebserviceClass運行的是不同的NSThread,它會調用父對象的主NSThread上的委託方法嗎?
1.0我覺得這個設計很合適,因爲它完全包含了Entity在不同類中的檢索,解析和返回。但是,對於每個不同的Web服務,我將不得不編寫委派方法並在每個步驟中實施委派協議。即從底部開始,WebserviceClass必須爲檢索XML的對象(開始,失敗,成功)以及解析XML的對象(開始,失敗,成功)實現委託方法,並且WebserviceClass必須能夠將這些響應中的每一個都委託給viewController,它再次必須從WebserviceClass實現委託方法(啓動,失敗,成功)。 有沒有更簡單的方法來做到這一點?
我有一些設計模式的經驗,而不是從使用代表團,以便始終爲目的C.語言在AS3或Java我不得不事件,可以冒泡通過的對象,並告知誰在聽有關的變化。在我讀過的所有Objective Objective代碼中,我只看到了使用0.1%時間的NSNotifications(相當於AS3或Java'Event')。
我描述給我的東西,完全擴展許多Web服務,給我在這裏一個潛在的錯誤/異常發生的完全控制權,但它似乎是一個很大的代碼,即可獲得該鬆耦合的設計。
1.1或者我應該完全接受代表團的做法,開始工作:)
感謝任何指針或幫助給出。我不是要求源代碼或喜歡,更多的是「你剛纔所描述的在每一天的情況Objective C的這被認爲是最佳實踐」 :)
非常感謝您Malaxeur! 寫下像我這樣的問題總是很健康,當我這樣做時,我得到了一些見解,我幾乎沒有點擊「發佈」。現在我很高興我做到了。 在閱讀ASIHTTPRequest文檔時,我也想到了提供同步和異步請求方法的庫。 使用委託的要點僅在處理異步代碼時相關。如果我已經在單獨的NSThread中將所有東西分散出來,則不需要將所有子例程拆分爲線程。所以我的getData和ParseData應該直接返回我的值。 – RickiG 2009-12-07 15:17:01
如果出現問題,我不在乎它是否異步發生,我只需要通知'upwards'它出錯了。 WebserviceClass將獲得大量的邏輯,但是在Factory類型的設計中,它只會考慮每個可能的結果並返回適合此場景的對象。 現在感覺好多了,謝謝:) – RickiG 2009-12-07 15:19:43