所以我一直在建立一個應用程序一段時間,隨着時間的推移,我的一個類(一個UIViewController)已經變得相當大,做了很多東西與一個視圖。因此,我必須使其符合很多協議(現在有12個)。我現在開始擔心我符合一些太多。符合太多協議的類?
遵守一個類中的很多協議是否存在問題?會有性能問題或類似的情況嗎?我不是在尋找個人意見,而是在於可能出現的性能問題,或者是否違背了最佳實踐/風格指南文檔(例如Apple發佈的文檔)。
我的一些類符合協議(不包括一些自定義的協議)的:
UIAlertViewDelegate, UIActionSheetDelegate, MFMailComposeViewControllerDelegate,
UITableViewDataSource, UITableViewDelegate, UITextFieldDelegate,
UIPopoverControllerDelegate, UIBarPositioningDelegate,
ABPeoplePickerNavigationControllerDelegate
編輯: 正如一些答案指出,大部分協議都是UI相關 - 而且觀點本身並不混亂。 UIAlertViewDelegate
,UIActionSheetDelegate
,MFMailComposeViewControllerDelegate
和ABPeoplePickerNavigationControllerDelegate
都單獨顯示(模態地在最後兩種情況下)。 UITableViewDataSource
和UITableViewDelegate
只是處理表格。 UITextFieldDelegate
用於管理字段的搜索(以便讓我檢查輸入的文本是否「有效」)。外觀上,iOS7需要使用UIBarPositioningDelegate
。 該類不是太大,只處理自己,沒有太多的耦合(至少在我看來)。
哇一個downvote說幾乎完全是什麼其他答案說:) –
(我沒有downvote,但)我不認爲如果一個類聲明「意外行爲」或「多線程」將是一個問題符合許多協議。 –
@MartinR感謝,這是有道理的,我想我不夠清楚,我的意思是如果兩個協議定義相同的方法,你可以看到問題。 –