목록iOS (106)
大器晩成
[클래스]편의 생성자만 추가 가능합니다 (즉, 본체의 지정생성자를 호출하는 방법으로만 구현 가능) 지정생성자 추가 불가 / 소멸자 추가 불가합니다. (항상 본래의 클래스에서 정의해야 함)클래스의 경우 상우의 지정생성자를 호출하는 델리게이트 어크로스가 발생하기 때문에, 편의생성자만 호출 가능합니다.*델리게이트 어크로스: 자신의 지정생성자를 호출하는 것 클래스 - 생성자 확장의 예시// UIColor 기본 생성자//UIColor(red: , green: , blue: , alpha: )var color = UIColor(red: 0.3, green: 0.5, blue: 0.4, alpha: 1) // 익스텐션 + 편의생성자 조합extension UIColor { convenien..
타입메서드의 확장// 애플이 만든 타입메서드 예시Int.random(in: 1...100)extension Int { static func printNumbersFrom1to5() { for i in 1...5 { print(i) } }}// 항상 1부터 5까지를 출력Int.printNumbersFrom1to5() 인스턴스 메서드의 확장// Int타입에 특정 프린트 구문 확장해보기extension String { func printHelloRepetitions(of times: Int) { for _ in 0.. mutating 인스턴스 메서드의 확장// 인스턴스 메소드는 익스텐션에서도 mutating 키워드를 사용하면 인스턴스 자..
익스텐션과 연산 프로퍼티익스텐션을 이용하면 기존 객체에 프로퍼티를 추가할 수 있습니다. 단 추가할 수 있는 것은 연산프로퍼티로 제한되며, 저장 프로퍼티는 익스텐션을 통해 추가할 수 없습니다. 대신에 인스턴스 프로퍼티든 타입프로퍼티든 연산 프로퍼티라면 모두 추가할 수 있습니다.인스턴스 계산 속성의 확장 (Apple 공식문서)extension Double { var km: Double { return self * 1_000.0} var m: Double { return self } var cm: Double { return self / 100.0} var mm: Double { return self / 1_000.0} var description: String { re..
익스텐션(Extenstion)은 이미 존재하는 클래스나 구조체, 열거형 등의 객체에 새로운 기능을 추가하여 확장해 주는 구문입니다.새로운 객체를 정의하는 것이 아니라 이미 존재하는 객체에 여러 가지 요소를 추가해 주는 것입니다. 스위프트에서 익스텐션을 통해 구현할 수 있는 것들은 대표적으로 다음과 같습니다.(타입) 계산속성, (인스턴스) 계산 속성(타입) 메서드, (인스턴스) 메서드새로운 생성자 (다만, 클래스의 경우 편의생성자만 추가 가능, 지정생성자 및 소멸자는 본체에서 구현)서브 스크립트새로운 중첩 타입 정의 및 사용프로토콜 채택 및 프로토콜 관련 메서드// 익스텐션을 사용할 때는 extension 키워드를 사용한다.extension { // 추가할 기능에 대한 코드 작성}// 기존 타입cl..