안녕하세요. 피더입니다.


오늘은 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

+ Recent posts