[Swift] Static function 과 Class function의 차이

Uno·2021년 7월 27일
0

Tip-Swift

목록 보기
9/26

Static function 과 Class function의 차이

상황


제가 코드를 작성하다가, 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의 예시


class SecondViewController: UIViewController {...}

class ThirdViewController: SecondViewController {...}

UIViewController 를 SecondViewController로 그리고 그 컨트롤러로 ThirdViewController 가 상속받고 있습니다.

class를 이용해서 계속 "상속" 하고 있죠?

수직적으로 추가기능을 추가하고 싶을 때, 사용하곤 하죠.

class function도 마찬가지입니다.

하지만 classFunction과 staticFunction은 동일하게 작동하고 있습니다.

동일하게 동작하고 있지만, 다른 속성이 있다.

그러면 다른 속성은 기능을 추가할 수 있다! 라는 점입니다.

그러면 final class 처럼 더이상 상속할 필요가 없다면 "static" 을 활용하는게 코드만 읽어도 더이상 기능확장이 없다는걸 알 수 있으니, 기준은 명확하겠네요.

기준


  • 기능확장이 필요하다. 혹은 기능확장의 가능성이 있다. → class Function
  • 기능확장이 필요없다 → static Function

참고자료


https://hryang.tistory.com/33

profile
iOS & Flutter

0개의 댓글