-
안녕하세요. 그린입니다!
이번 포스팅에서는 타입 메서드에 대해 알아보겠습니다.
# 타입 메서드
코딩을 하다보면 구조체나 클래스로 생성하였는데 다른곳에서 부르려할때 인스턴스를 만들지 않고 함수를 쓰려할때 어떻게 구현하는지 궁금했습니다. 그러다 타입 메서드에 대해 알게되었습니다!!
우선 흔히 잘 알고있는 인스턴스 메서드의 생성과 사용하는 방법에 대해 보겠습니다.
-. 인스턴스 메서드
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