簡體   English   中英

拆分UITableDelegate和UITableDataSource是否有意義?

[英]Does it ever make sense to split UITableDelegate and UITableDataSource?

這困擾了我很長時間。 為UITableView定義了兩種委托協議:實際的委托和數據源。 但是,考慮到方法在兩種方法之間的分配方式,我還沒有看到在兩個單獨的對象中實現協議可行的情況。 當這樣做確實有意義時,有人可以舉一個例子嗎?

簡短的回答:是的。

長答案:

它們分為兩種不同的協議,因為它們具有不同的用途。

委托負責管理表本身的各個方面,例如選擇,重新排序和刪除行,... UITableViewDelegate協議參考

與之相反,UITableViewDatasource負責調整您的數據模型,使其適合表的需求。 它提供了表格的單元格,告訴表格有多少節,每個節有多少行,... UITableViewDatasource協議參考

根據您的數據以及您要對表執行的操作,該代碼可能會變得任意大。 如果太大,可以將其拆分以更好地導航和概覽。 我可以想到的一種情況就是這種區別可以提高代碼質量。

IMO,這樣做不會帶來任何好處,因為數據源僅提供與數據交互的方法,與委托相同。 如果您的商店又大又笨拙,那么分離數據源將無法解決問題。

沒有附加值

強制分離時,您會得到一些無法預測的行為:

使用單獨的委托/數據源時的UITableView問題

如何避免iOS上笨拙的UITableViewController?


這取決於應用程序的細節

另一方面,根據應用程序設計,可能需要將數據源與委托分開:

較亮的視圖控制器

解析后,將UITableView委托和數據源放在單獨的類中

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM