제가 코드를 작성하다가, UIViewController와 UITableViewCell 에서 특정 메소드를 활용해야하는 경우가 있었습니다. 그래서 전역범위에서 메소드를 활용할 방법을 찾다가 해당 개념을 찾았습니다.
class StaticModule {
class func classFunction() {
print(">>DEBUG class Function")
}
static func staticTest() {
print(">>DEBUG STATIC TEST")
}
}
static func은 오버라이딩이 되지 않습니다.
class func은 서브클래스 상속이 가능합니다.
말 그대로 class는 class이죠.(?)
class SecondViewController: UIViewController {...}
class ThirdViewController: SecondViewController {...}
UIViewController
를 SecondViewController로 그리고 그 컨트롤러로 ThirdViewController 가 상속받고 있습니다.
class를 이용해서 계속 "상속" 하고 있죠?
수직적으로 추가기능을 추가하고 싶을 때, 사용하곤 하죠.
class function도 마찬가지입니다.
하지만 classFunction과 staticFunction은 동일하게 작동하고 있습니다.
동일하게 동작하고 있지만, 다른 속성이 있다.
그러면 다른 속성은 기능을 추가할 수 있다! 라는 점입니다.
그러면 final class 처럼 더이상 상속할 필요가 없다면 "static" 을 활용하는게 코드만 읽어도 더이상 기능확장이 없다는걸 알 수 있으니, 기준은 명확하겠네요.