반응형
Swift에서 static 및 final은 속성, 메서드 및 클래스의 동작과 액세스를 제어하기 위해 서로 다른 컨텍스트에서 사용되는 두 개의 키워드입니다. 예제와 사용 사례를 통해 각각을 살펴보겠습니다.
Static
static 키워드는 클래스나 구조체의 인스턴스가 아닌 클래스나 구조체 자체에 속하는 속성과 메서드를 정의하는 데 사용됩니다. 인스턴스가 없어도 클래스 또는 구조체 이름을 사용하여 액세스할 수 있습니다.
정적 속성 및 메서드의 예:
class SampleClass {
static var staticValue: Int = 10
static func staticFunction() {
print("This is a static function")
}
}
// static 속성과 함수에 접근하는 방법
print(SampleClass.staticValue) // 10
SampleClass.staticFunction() // This is a static function
Static 사용 사례:
- 싱글톤 패턴: 정적 속성을 사용하여 클래스의 공유 인스턴스를 구현할 수 있습니다.
- 유틸리티 메서드: 정적 메서드는 인스턴스별 데이터에 의존하지 않는 유틸리티 함수를 만드는 데 유용합니다.
- 상수: 클래스 또는 구조체와 연결되지만 인스턴스에만 국한되지 않는 상수를 선언합니다.
Final
final 키워드는 클래스, 메서드 또는 속성이 다른 클래스나 구조체에 의해 재정의되거나 하위 클래스화될 수 없음을 나타내는 데 사용됩니다. 상속에 대한 제어 수준을 제공하고 추가 수정을 방지하는 데 사용됩니다.
최종 클래스 및 메소드의 예:
class BaseClass {
final func doSomething() {
print("Doing something in the base class")
}
}
class SubClass: BaseClass {
// 최종 메서드를 재정의할 수 없으므로 컴파일 오류가 발생합니다.
// func doSomething() {
// print("Attempting to override")
// }
}
let baseInstance = BaseClass()
baseInstance.doSomething() // Doing something in the base class
let subInstance = SubClass()
subInstance.doSomething() // Doing something in the base class
Final 사용 사례:
- 하위 클래스화 방지: 클래스를 더 이상 하위 클래스화할 수 없도록 하려면 해당 클래스를 최종 클래스로 표시하세요.
- 메서드 구현: 클래스의 메서드에 final을 사용하면 하위 클래스에서 재정의되는 것을 방지할 수 있습니다.
- 클래스 구현: 클래스에 final를 사용하면 더이상 해당 클래스를 상속 받는 하위 클래스를 만들 수 없습니다.
요약하면 static은 유형 자체에 속하는 속성 및 메서드에 사용되는 반면 final은 메서드 및 클래스의 추가 상속이나 재정의를 방지하는 데 사용됩니다. 이러한 키워드를 언제, 어떻게 사용하는지 이해하면 더욱 강력하고 유지 관리가 쉬운 Swift 코드를 디자인하는 데 도움이 됩니다.
반응형
'iOS > Swift' 카테고리의 다른 글
iOS Spotlight 검색에서 네이버처럼 앱 검색하기: CFBundleSpokenName 활용하기 (1) | 2024.11.11 |
---|---|
iOS Keychain 사용 방법과 예제 (0) | 2023.10.26 |
@propertyWrapper 활용 예제 1 (0) | 2023.10.16 |
Swift Collective Type (Set) (0) | 2017.07.07 |
Swift Bitwise Operator (0) | 2017.06.26 |