간략한 스위프트 문법/사용법 정리
🧐 익스텐션(Extension)
클래스, 구조체, 열거형, 프로토콜 타입에 기능을 추가(확장)할 수 있다.
클래스를 상속받지 않아도 되고, 원본 코드를 몰라도 기능을 확장시켜서 사용할 수 있도록 하는 문법이다.
(새 기능을 추가할 수는 있지만, Override는 할 수 없음.)
📎 사용법
// 숫자(int) 짝수, 홀수
extension Int {
var oddOrEven: String {
if self % 2 == 0 {
return "짝수"
} else {
return "홀수"
}
}
}
print(3.oddOrEven) // 출력: "홀수"
print(4.oddOrEven) // 출력: "짝수"
기본 자료형(Int, Float, String 등)은 구조체(struct)로 설계되어 있기 때문에 extension으로 기능을 추가할 수 있다.
📎 활용 예제
버튼에 할당할 color 값을 UIColor 클래스에 익스텐션으로 미리 확장시켜놓고 사용하는 예제
extension UIColor {
var mainButtonColor: UIColor {
UIColor(red: 50/255, green: 70/255, blue: 120/255, alpha: 1)
}
class var subButtonColor: UIColor {
UIColor(red: 100/255, green: 100/255, blue: 100/255, alpha: 1)
}
}
var button = UIButton()
var subButton = UIButton()
button.titleLabel?.textColor = UIColor().mainButtonColor
subButton.titleLabel?.textColor = UIColor.subButtonColor
같은 색을 사용해야 하는 버튼이 많아질수록 extension을 활용해서 중복 코드를 줄일 수 있다.
[예시 코드 출처]
- 인프런(UIKit -iOS14 실무 가이드)
'iOS(macOS) > Swift' 카테고리의 다른 글
[Swift/문법] 고차함수 (Higher-order function) (0) | 2022.08.11 |
---|---|
[Swift/문법] 프로토콜 (Protocol) (0) | 2022.08.10 |
[Swift/문법] 클래스(Class), 구조체(Structure) (0) | 2022.08.10 |
[Swift/문법] Enumerations (enum, 열거형) (0) | 2022.08.09 |
[Swift/문법] Closure (클로저) (0) | 2022.08.07 |