ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 타입 메서드
    Swift 2021. 1. 27. 09:49

    안녕하세요. 그린입니다!

    이번 포스팅에서는 타입 메서드에 대해 알아보겠습니다.

    # 타입 메서드

    코딩을 하다보면 구조체나 클래스로 생성하였는데 다른곳에서 부르려할때 인스턴스를 만들지 않고 함수를 쓰려할때 어떻게 구현하는지 궁금했습니다. 그러다 타입 메서드에 대해 알게되었습니다!!

     

    우선 흔히 잘 알고있는 인스턴스 메서드의 생성과 사용하는 방법에 대해 보겠습니다.

     

    -. 인스턴스 메서드

    class InstanceMethod {
    	func instanceTest() -> String { 
        	return “test” 
        }
    }
    
    var instanceMethod = InstanceMethod()
    print(instanceMethod.instanceTest())

    이렇게 사용하는 경우가 인스턴스 메서드의 사용입니다.

    , InstanceMethod 라는 네이밍의 instanceMethod 변수를 만들고 해당 내부 함수인 instanceTest 메서드를 호출합니다.

     

    보통 이렇게 사용해왔는데, 싱글턴을 사용하며 타입 메서드의 필요성에 알게되었고 적용해보았습니다.

     

    -. 타입 메서드

    : 타입 자체에서 호출하는 메서드 코드를 구현할때의 차이점은 메서드명 앞에 static 혹은 class 키워드가 붙는다.

    class InstanceMethod { 
        class func instanceTest() -> String { 
            return “test” 
        }
    }
    
    print(InstanceMethod. instanceTest())

    이렇게 타입에서 바로 메서드의 호출이 가능합니다. (즉, 타입 자체가 타입 메서드를 호출합니다.)

     

    다만 인스턴스 메서드처럼 자동 완성 기능을 제공하지 않아 모두 쳐줘야합니다.

     

    <장점>

    -. 인스턴스를 따로 만들지 않고 즉시 처리를 안에서 해야하는 경우에 유용합니다.

    -. 메모리적인 측면에서도 인스턴스를 만들면 해제를 하거나 ARC 대해서도 추후 생각을 해야하는데 생각하지 않고 사용할 있습니다.

    <단점>

    -. 확장성이 없습니다.

    -. class 키워드와 static 키워드의 차이점

    : 타입메서드의 /단점은 동일하나 오버라이드 여부의 차이 있습니다.

    class 오버라이드를 지원하고 static은 오버라이드를 지원하지 않습니다.

     

    🧐궁금점

    : class 키워드로 지정하여도 앞에 final 붙인다면 오버라이드를 방지할 있습니다.

      근데 그렇게 되면 static하고 차이가 없는데 final 붙일 있게 해놨을까요 ....??? ✍️

     

    이렇게 간단하게 자주 사용되는 타입 메서드에 대해 알아봤습니다.

    궁금점도 남겨둔채 더 학습하여 Swift 문법 지식을 보완해야겠습니다.

    감사합니다👨🏼‍💻

    'Swift' 카테고리의 다른 글

    Type Casting  (0) 2021.01.29
    Protocol Oriented Programming  (0) 2021.01.28
    온도 표현단위와 변환 방법  (0) 2021.01.19
    CFAbsolute TimeGetCurrent  (0) 2021.01.15
    메모리 구조 & ARC  (0) 2021.01.11
Designed by Tistory.