굿데이 굿데이 여러분 오랜만입니다 코로나 시국에 집콕은 잘하고 계신지...
오늘은 swift에서 제공하는 함수의 형태 중에 class func 과 static func 의 차이점에 대해서 알아보려구 해여
이 둘은 타입 메소드로 생성자를 사용하지 않고도 바로 호출할 수가 있져?
일반 메소드의 경우에는 꼭 생성자를 만들어서 사용해야하기때문에 해당 객체에 종속되지만 타입 메소드들은 그렇지 않다는 차이점이 이씀다 간단히 예를 들어보게씀다
class TestModule {
class func classTest() {
print("CLASS TEST")
}
static func staticTest() {
print("STATIC TEST")
}
}
class TestViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
TestModule.classTest() // "CLASS TEST"
TestModule.staticTest() // "STATIC TEST"
}
}
아주 간단하쥬? 두 함수 모두 동일하게 작동합니다.
그런데 이 두가지를 왜 나눠놓느냐? 물으신다면 그걸 이제 알아보려구 한거니까 가보시져
일단 TestModule 을 상속받는 SubTestModule 클래스를 만들어보게씀다
class SubTestModule: TestModule {
override class func classTest() {
print("SUB CLASS TEST")
}
override static func staticTest() { // override 되지 않음 오류 발생
print("SUB STATIC TEST")
}
}
어랍쇼 static func 은 오버라이드가 되지 않네요! 즉 class func 은 자식 클래스에서 상속이 가능하지만, static func 은 자식 클래스에서 상속이 불가능하다는 차이점을 찾아내었읍니다
그렇다면 static func 은 final class func 와 동일하게 작동한다는 점도 유추해낼 수 있겠쥬?
아주 간단하게 이 두 함수 형태의 차이점을 알아보았읍니다
결국 static func 와 final class func 는 취향차이겠지만 짧은 static 을 쓰는게 더 편해보이는군여
단어를 생각해보면 class 기 때문에 상속이 가능, static 으로 고정된 친구기 때문에 상속이 불가능하다! 라고 생각하면 좀 더 이해하기 편할거 같다고 생각해봅니다
그럼 다음 시간에 또 만나여 모두 안녕~~~
'Swift 개발 이야기' 카테고리의 다른 글
iOS Push Notification / Silent Push 에 대해 Araboza (1) | 2021.02.18 |
---|---|
SwiftUI 로 ImagePicker 호출하기 (0) | 2020.11.20 |
inout 에 대해 Araboza.swift (0) | 2020.11.17 |
iOS14 이상에서 IDFA 가져오기 (0) | 2020.10.28 |
Image Cache in Swift - 이미지 캐싱 사용해보기 (0) | 2020.10.19 |