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
이용하여 메서드 추가하기
String
을 Int
로 변환하여 반환하는 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{}
댓글