Swift랑 친해지기/Swift문법정리

[Swift] extension (익스텐션)

데브킹덕 2022. 9. 21. 17:22

기존의 클래스 ,구조체, 열거형, 프로토콜 등 타입에 새로운 기능(프로퍼티, 메서드,이니셜라이져 등)을 추가

원본타입에 접근하지 못하는 타입도 확장해서 사용 가능

 

 

예제 1 )

구조체 Int 에서는 짝수와 홀수라는 기능을 제공하지 않음

원본 코드를 그대로 두고 내가 원하는  기능만 확장을 해봄

extension을 이용하여 Int 구조체에 짝수,홀수 기능을 확장함

isEven과 isOdd 메서드를 사용할 수 있게 됨

 

예제2)

extension 확장자를 이용하여 ConvertToInt라는 메서드 추가해 문자열 "숫자"를  Int형 숫자로  변경할 수 있도록 선언 

 

우리가 보통 TableView, CollectionView 등에 delegate와 DataSource를 Extension해주는 것은

ViewController를 확장해주는 행위임

class ViewController: UIViewController{

}

extension ViewController: UICollectionViewDelegate,UICollectionDataSoutce{

}

 

 

 

extension에는  저장프로퍼티 사용할 수 없고 연산 프로퍼티만 사용가능