ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • extension
    개발/iOS 2020. 11. 23. 15:39

    swift의 extension 은 클래스나 프로토콜에 새로운 함수를 추가해주는 기능을 제공한다. 일반적인 경우 클래스에 새로운 함수를 추가할 때 클래스를 수정하면 되지만 import 해서 사용중인 클래스의 경우에는 수정 할 수가 없다. 클래스는 수정 할 수 없으나 범용적으로 사용하는 함수의 경우에는 extension을 사용하면된다. 

     

    예를들어 아래 코드처럼 둥근 빨간 버튼을 만드는 경우 이렇게 구현을 하면 가능하긴 하나 매번 이런식으로 만들어야되면 코드의 가독성이 떨어진다. 

     

    이런 경우 extension을 이용해 UIButton 클래스에 새로운 함수, makeCircular를 만들 수 있다. 이러면 앞서 둥근 버튼을 만들기 위해 실행한 코드를 하나의 함수에 넣고 호출하는 식으로 해결 할 수 있다. UIButton 클래스를 수정 할 수는 없지만 새로운 함수를 추가함으로써 가능한 방식이다.

     

     

    extension은 protocol에 적용할 때 유용한데 이때는 함수의 기본 body를 만들어줘서 상속받을 때 기본 body가 있는 함수들은 따로 구현하지 않아도 된다는 장점이 있다.  아래 코드를 보면 WeatherManagerDelegate라는 프로토콜은 두개의 함수가 있는데 그 아래 extension에서 didFailWithError 함수에 대해서 body를 넣어뒀다. 

     

    protocol WeatherManagerDelegate {
        func didUpdateWeather(_ weatherManager: WeatherManager, _ weather: WeatherModel)
        
        func didFailWithError(_ error: Error)
    }
    
    extension WeatherManagerDelegate {
        func didFailWithError(_ error: Error) { }
    }

     

    이렇게 기본 body를 세팅해주면 WeatherManagerDelegate를 받는 쪽에서는 didUpdateWeather 함수만 구현하면 되고, didFailWithError는 구현하지 않아도 된다. 반드시 필요한 함수만 구현토록해 가독성을 좋아지게 하는 방법이다.

    '개발 > iOS' 카테고리의 다른 글

    tableview  (0) 2020.11.24
    codable  (0) 2020.11.23
    closure  (0) 2020.11.23
    segue  (0) 2020.11.23
    protocol  (0) 2020.11.21

    댓글

Designed by Tistory.