2

저는 범주가 정의 된 범주에서 정의 된 범주의 메서드를 재정의해서는 안된다는 것을 알고 있습니다. 하지만 상속 된 메서드를 재정의하는 방법은 무엇입니까? 그 확인은?UIViewController 메서드를 UITableViewController의 범주에서 재정의 할 수 있습니까?

특히 UITableViewController는 UIViewController에서 viewWillAppear :, viewWillDisappear, viewDidLoad : 등의 메서드를 상속합니다.

그래서 UITableViewController의 범주에서 UIViewController에서 상속 된 메서드를 재정의한다고 가정 해 보겠습니다.

괜찮습니까?

내가 알 수있는 한, Apple의 향후 버전 인 UIKit에서 Apple이 UITableViewController에서이 메서드를 재정의하기로 결정한 경우에만 중단됩니다.

이렇게하지 않는 다른 이유가 있습니까?

편집 :

그래서 답변을 주셔서 감사합니다, 그래서 내 레이더에서 전달 된 문서의 범주에서 메소드를 오버라이드 (override)에 대한 부분.

서브 클래 싱 및 확장 기능을 통해이를 해결해야합니다.

+1

하위 클래스가 아닌 이유가 있습니까? – Mario

답변

1

범주의 메소드를 대체하지 않는 것이 좋습니다. Overriding methods using categories in Objective-C

내 생각에 상속되거나 클래스 정의 된 메서드를 재정의하는 것이 중요하지 않습니다. 왜 그것이 변화를 가져야 하는가? 서브 클래 싱하지 않는 이유는 무엇입니까?

+0

카테고리 사용의 주된 동기는 내 클래스에 좁게 정의 된 동작을 여러 개 추가하려는 것입니다. 다중 상속은 옵션이 아니기 때문에 카테고리없이이 작업을 수행 할 수있는 방법은 없습니다. –

관련 문제