আমি একটি রে ওেন্ডারলিচ টিউটোরিয়ালের মধ্য দিয়ে কাজ করছি এবং লক্ষ্য করেছি যে লেখক ক্লাস এক্সটেনশনগুলি ডেলিগেট কলব্যাকগুলি ধরে রাখার পরিবর্তে ক্লাসে নিজেই পরিচালিত হওয়ার পরিবর্তে ব্যবহার করে অর্থাৎ:
শ্রেণিবদ্ধকরণের ভিতরে ডেলিগেট কলব্যাকগুলি:
extension LogsViewController : UIPopoverPresentationControllerDelegate {
func adaptivePresentationStyleForPresentationController(controller: UIPresentationController, traitCollection: UITraitCollection) -> UIModalPresentationStyle {
...
}
}
এটি শ্রেণীর মধ্যে অন্তর্ভুক্ত থাকার বিপরীতে:
শ্রেণীর ভিতরে প্রতিনিধি কলব্যাকগুলি:
class LogsViewController : UITableViewController, UIPopoverPresentationControllerDelegate {
func adaptivePresentationStyleForPresentationController(controller: UIPresentationController, traitCollection: UITraitCollection) -> UIModalPresentationStyle {
...
}
}
আমি একই সময়ে এটি আশ্চর্যজনক এবং আকর্ষণীয় পেয়েছি। "লগসভিউকন্ট্রোলার এক্সটেনশন.সুইফ্ট" নামে লগসভিউ কনট্রোলার শ্রেণিতে কেবল এক্সটেনশনের জন্য তাঁর উত্সর্গীকৃত একটি ফাইল রয়েছে এবং প্রতিটি প্রতিনিধি প্রোটোকলের জন্য আলাদা এক্সটেনশন রয়েছে: ইউআইটিবেলভিউ ডেটাসোর্স, ইউআইএসপ্লিটভিউডেলিগেট ইত্যাদি ie
একাধিক শ্রেণীর এক্সটেনশন প্রতিটি ডাব্লু / ডেলিগেট কলব্যাকের নিজস্ব ফাইলের মধ্যে:
extension LogsViewController: UISplitViewControllerDelegate {
... callbacks
}
extension LogsViewController : UIPopoverPresentationControllerDelegate {
... callbacks
}
কেন?
এটি করার কী কী সুবিধা রয়েছে? আমি দেখতে পাচ্ছি যে এটি আলাদা করার জন্য এটি আরও কিছুটা পাঠযোগ্য হতে পারে তবে একই সাথে এটি ইন্ডিয়ারেশনের একটি স্তর। এমন কি ওও নীতিগুলি রয়েছে যা এইগুলি করার পক্ষে বা বিপক্ষে?