
타입 메서드는 클래스, 구조체, 열거형에 속하는 함수로, 해당 타입 자체에 연관된 동작을 수행한다. 인스턴스 메서드와는 달리 타입메서드는 특정 인스턴스에 종속되지 않으며, 인스턴스를 생성하지 않고도 호출할 수 있다.
타입메서드는 주로 다음과 같은 상황에서 사용된다.
- 인스턴스를 생성하지 않고도 수행할 수 있는 작업을 처리할 때
- 클래스에 대한 유틸리티 기능을 제공할 때
- 인스턴스 생성을 대체하거나 관리하는 팩토리 메서드를 구현할 때
1. 인스턴스를 생성하지 않고도 수행할 수 있는 작업을 처리할 때:
타입 메서드는 타입에 속하기 때문에 인스턴스 생성 없이 호출할 수 있다. 따라서 인스턴스 변수나 메서드에 의존하지 않는 작업을 수행할 때 유용하다.
struct EmailValidator {
static func isValid(email: String) -> Bool {
// 이메일 유효성 검사 로직 구현
}
}
let validEmail = "john@example.com"
let isValid = EmailValidator.isValid(email: validEmail)
2. 타입에 대한 유틸리티 기능을 제공할 때:
타입 메서드는 특정 타입와 관련된 유틸리티 기능을 제공하는 데 사용된다.
struct MathUtility {
static func squareRoot(of value: Double) -> Double {
// 제곱근 계산 로직 구현
}
}
let squareRoot = MathUtility.squareRoot(of: 9) // 결과는 3.0
3. 팩토리 메서드 구현:
객체 생성을 캡슐화하는 팩토리 메서드를 구현할 때 타입 메서드를 사용할 수 있다. 이를 통해 객체 생성 로직을 한 곳에서 관리하고, 다양한 타입의 객체를 생성할 수 있다.
class Animal {
// ...
}
class Dog: Animal {
// ...
}
class Cat: Animal {
// ...
}
class AnimalFactory {
static func createAnimal(type: String) -> Animal? {
switch type {
case "Dog":
return Dog()
case "Cat":
return Cat()
default:
return nil
}
}
}
let myDog = AnimalFactory.createAnimal(type: "Dog")
let myCat = AnimalFactory.createAnimal(type: "Cat")'Swift' 카테고리의 다른 글
| 제네릭(Generic), where 키워드 (0) | 2023.05.03 |
|---|---|
| 프로퍼티 래퍼(Property Wrapper) (0) | 2023.05.03 |
| SwiftUI에서 UIImagePickerController 사용 (0) | 2023.05.01 |
| GeometryReader, Gesture, AVAudioPlayer로 진동 구현 OE - 2 (0) | 2023.05.01 |
| Watch Connectivity로 폰-워치 통신 구현 OE - 1 (0) | 2023.05.01 |