0
我正在爲雜誌查看器設計一個API接口。像iGizmo(iPad版)。顯示雜誌的視圖與TableView非常相似。正如人們可以將文章視爲章節和頁面一樣考慮爲單元格。UITableViewDataSource的設計原理
因此,我想公開DataSource &代表與UITableView相同的方式。然而,我不完全確定爲什麼蘋果設計TableView委託/數據源,它總是提供TableView作爲每個方法的參數。
我試圖合理化它,我沒有找到這樣的api設計的任何好藉口。 我在考慮在我的API中忽略tableView
/magazineView
參數。
您是否看到這樣的API設計背後有什麼好的理由?
寫下如下的方法會不會更容易,更清晰?
– cellForRowAtIndexPath:
– numberOfSections
– numberOfRowsInSection:
– sectionIndexTitles
– sectionForSectionIndexTitle:atIndex:
– titleForHeaderInSection:
– titleForFooterInSection:
沒錯,數據源可能會將內容提供給許多視圖,而委託人可能是許多視圖的代表。此外,在某些情況下,代理或數據源可能需要檢查調用它的視圖以確定如何響應。 – Jonah 2011-01-05 18:36:17
@Jonah,@middaparka,我同意,但是您是否曾經實現過一種數據源,即一個實例服務多個桌面視圖?爲什麼不創建相同數據源類的兩個實例?這樣的API設計似乎忽略了objc是面嚮對象語言的事實。 – 2011-01-06 01:36:39
我將編寫一個數據源來提供某個模型的特定視圖,當然可以重用該數據源實例來支持多個視圖,例如以不同的方向顯示不同的表視圖,但我同意數據源通常不需要考慮請求數據的對象。另一方面,我的代表會一直檢查其調用者的身份,例如,我可能會使用一個類作爲其集體代表來管理NSURLConnections的集合。 – Jonah 2011-01-06 02:13:49