강신규
[Swift] Extensions (확장) 이란 본문
Extensions (확장) 이란
기존의 클래스 , 구조체, 열거형 등의 타입에 새로운 기능을 추가 할 수 있는 기능입니다.
이를 통해 기존의 타입을 확장하거나, 프로토콜 적용 등을 통해 새로운 기능을 추가할 수 있습니다.
-> 원본 타입에 접근하지 못하는 타입들을 확장하는 개념!
상속 VS Extension
상속은 클래스 타입에서만 사용 가능하지만 Extension은 구조체 , 클래스 , 열거형 , 프로토콜 타입에서도 사용 가능합니다.
사용 예시
만약 Color 를 사용하고 싶을때 hex 값을 통해 색을 불러오고 싶지만 원래 Color 에는 해당 기능이 없기 때문에 extension을 사용하여 간편하게 사용이 가능하다.
extension Color {
init(hex: String) {
let scanner = Scanner(string: hex)
_ = scanner.scanString("#")
var rgb: UInt64 = 0
scanner.scanHexInt64(&rgb)
let r = Double((rgb >> 16) & 0xFF) / 255.0
let g = Double((rgb >> 8) & 0xFF) / 255.0
let b = Double((rgb >> 0) & 0xFF) / 255.0
self.init(red: r, green: g, blue: b)
}
static let mainBlue = Color(hex: "0048FF")
static let darkGray = Color(hex: "7C7C7C")
static let mainRed = Color(hex: "FF3F3F")
static let white3 = Color(hex: "D9D9D9")
static let white2 = Color(hex: "E1E1E1")
static let white1 = Color(hex: "E7E7E7")
static let black5 = Color(hex: "000000")
static let black4 = Color(hex: "333333")
static let black3 = Color(hex: "5C5C5C")
static let black2 = Color(hex: "7D7D7D")
static let black1 = Color(hex: "979797")
static let mainGray = Color(hex: "F2F4F6")
}
-> hex 값을 통해 색깔을 불러오는게 가능해졌다.
원래 없던 기능을 extension을 통해 새로운 기능을 추가해 개발자가 편하게 사용가능합니다.
왜 사용해야할까 or 나만의 고민
외부 라이브러리나 프레임워크를 가져다 사용했을때 원본 코드를 수정할 수 없다 -> 내가 원하는 기능을 외부에서 가져온 타입에 추가하고 싶을때 extension을 사용하면 좋습니다.
'iOS > Swift' 카테고리의 다른 글
| [Swift] Key-Value Coding(KVC) 란 (0) | 2024.08.27 |
|---|---|
| [iOS][Swift] App LifeCycle - 앱 생명주기 (0) | 2024.05.24 |
| [Swift] unrecognized selector sent to instance (0) | 2023.06.02 |
| [Swift] Auto Layout 이란 (2) | 2023.05.17 |
| [Swift] Optional 정리 (0) | 2023.01.31 |