Ray Wenderlich 튜토리얼을 진행하면서 저자가 클래스 확장을 사용하여 델리게이트 콜백을 클래스 자체에서 처리하지 않고 델리게이트 콜백을 유지하는 것으로 나타났습니다.
클래스 확장 내에서 콜백 위임 :
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, UISplitViewDelegate 등의 확장자가 다릅니다.
자체 파일 내에서 델리게이트 콜백이있는 여러 클래스 확장 :
extension LogsViewController: UISplitViewControllerDelegate {
... callbacks
}
extension LogsViewController : UIPopoverPresentationControllerDelegate {
... callbacks
}
왜?
이를 수행하면 어떤 이점이 있습니까? 이것을 분리하는 것이 조금 더 읽기 쉬운 위치를 알 수 있지만 동시에 간접적 인 수준입니다. 이를 지원하거나 반대하는 OO 원칙이 있습니까?