강신규

[Swift] Extensions (확장) 이란 본문

iOS/Swift

[Swift] Extensions (확장) 이란

kangnew 2024. 4. 12. 13:50

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