안녕하세요. 피더입니다.
오늘은 Extension과 Override에 대해 알아보도록 하겠습니다.
Extension 이란
Extension은 구조체, 클래스, 열거형, 프로토콜 타입에 새로운 기능을 추가할 수 있는 기능입니다. 클래스 상속과는 다르게 수직 확장이 아닌 수평 확장으로 타입에 기능을 추가
합니다.
위에 애플 가이드에서 "Extension은 타입에 새로운 기능을 추가할 수 있지만, 기존에 존재하는 기능을 Override 할 수 없다." 라고 하고 있습니다.
하지만 현재 개발을 하면서 Extension을 통해 Override 가 사용 가능합니다.
위에 소스코드에서 Extension 에서 shouldAutorotate 라는 변수와 viewDidLoad 라는 메소드를 Override 하고 있고, 에러가 발생하지 않고 있습니다.
이러한 일이 가능한 이유는 컴파일러가 Objective-C와의 호환성을 위해 Extension에서 Override를 허용하기 때문입니다. 즉, 메소드가 Objective-C와 호환되는 경우에만
확장에서 메소드 Override 할 수 있습니다.
Extension을 통한 Method Swizzling 또한 가능합니다. load() 및 initialize() 를 override 하여 원하는 메소드를 실행시킬 수 있습니다.
애플에서 Extension은 기능의 추가를 위해 사용하라고 하니 Extension에서 Override는 지양합시다...
참고
'iOS Development' 카테고리의 다른 글
Layout Update 이해하기 (2) | 2017.12.05 |
---|