मैं एक रे वेंडरलिच ट्यूटोरियल के माध्यम से काम कर रहा था और देखा कि लेखक वर्ग एक्सटेंशन का उपयोग करता है ताकि उन्हें क्लास में ही संभाला जाए, बल्कि प्रतिनिधि कॉलबैक रखने के लिए:
वर्ग विस्तार के अंदर प्रतिनिधि कॉलबैक:
extension LogsViewController : UIPopoverPresentationControllerDelegate {
func adaptivePresentationStyleForPresentationController(controller: UIPresentationController, traitCollection: UITraitCollection) -> UIModalPresentationStyle {
...
}
}
वर्ग के भीतर समाहित होने के विपरीत:
वर्ग के अंदर प्रतिनिधि कॉलबैक:
class LogsViewController : UITableViewController, UIPopoverPresentationControllerDelegate {
func adaptivePresentationStyleForPresentationController(controller: UIPresentationController, traitCollection: UITraitCollection) -> UIModalPresentationStyle {
...
}
}
मुझे यह अजीब और दिलचस्प लगा। उसके पास एक फाइल है, जो केवल "LogsViewControllerExtension.swift" LogsViewController क्लास पर एक्सटेंशन के लिए समर्पित है और प्रत्येक प्रतिनिधि प्रोटोकॉल के लिए एक अलग एक्सटेंशन है: UITableViewDataSource, UISplititDelegate, आदि:
कई वर्ग एक्सटेंशन प्रत्येक w / डेलिगेट कॉलबैक को अपनी फाइल के अंदर रखते हैं:
extension LogsViewController: UISplitViewControllerDelegate {
... callbacks
}
extension LogsViewController : UIPopoverPresentationControllerDelegate {
... callbacks
}
क्यों?
ऐसा करने के क्या फायदे हैं? मैं देख सकता हूं कि इसे अलग करने के लिए यह थोड़ा अधिक पठनीय कहां हो सकता है, लेकिन साथ ही यह अप्रत्यक्ष स्तर का है। क्या ऐसे ओओ सिद्धांत हैं जो इसके समर्थन में हैं या ऐसा करने के खिलाफ हैं?