Dev/Swift

Swift: extension

두넌 2023. 5. 15.

DAY 15

extension

 

extension


클래스, 구조체, 열거형, protocol에 새로운 기능을 추가하는 것

extension은 하위 클래스를 생성하거나 참조하지 않고 기존 클래스에 메서드, 생성자(initializer), 계산 프로퍼티 등의 기능을 추가하기 위하여 사용함

스위프트 언어의 built-in 클래스와 iOS 프레임워크에 내장된 클래스에 기능을 추가할 때, extension을 이용하면 매우 효과적임

extension 기존타입이름 {
    // 새로운 기능
}

 

Int 자료형에 extension 이용하여 computed property 추가하기

짝수인지 판별하는 isEven 과 홀수인지 판별하는 isOdd 추가하기

extension Int {
    var isEven: Bool {
        return self % 2 == 0
    }
    var isOdd: Bool {
        return self % 2 == 1
    }
}

var number = 3
print(number.isOdd)
print(number.isEven)

output

true
false

 

String 자료형에 extension 이용하여 메서드 추가하기

StringInt로 변환하여 반환하는 convertToInt() 추가하기

extension String {
    func convertToInt() -> Int? {
        return Int(self)
    }
}
var string = "0"
string.convertToInt()

 

extension은 protocol 채택할 때 많이 사용

아래처럼 소스를 작성하면 클래스가 너무 비대해짐

class ViewContrller: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {}

클래스를 다음과 같이 나누면 소스가 깔끔하고 이해하기 쉬움

class ViewController: UIViewController{}
extension ViewController: UIPickerViewDelegate{}
extension ViewController: UIPickerViewDataSource{}

댓글