protocol
-
Swift4: Protocol Oriented Programming - 4.제네릭POP 2021. 2. 15. 23:36
4장 제네릭 제네릭은 중복을 피하고, 유연하고 재사용 가능한 코드를 작성할 수 있게 해준다. 스위프트의 Array나 Set 같은 경우 모두 제너릭 구조체로 구현되어 있다. enum Optional { case None case Some(T) } 제네릭의 대표적 예시는 옵셔널이다. 옵셔널에 nil을 대입하면 None 값을 갖고, 어떠한 값을 대입하면 T 타입의 Some 값을 갖게 된다. 제네릭 함수 제네릭 함수를 이용하여 타입 마다 같은 기능을 하는 함수를 계속해서 만들 필요 없이, 중복을 최소화하여 구현할 수 있다. func swapGenerics(a: inout T, b: inout T) { let tmp = a a = b b = tmp } 위에서 T는 플레이스홀더로 스위프트에게 타입을 런타임 단계에서..
-
Swift4: Protocol Oriented Programming - 3.확장POP 2021. 2. 15. 01:18
3장 확장 확장 확장은 이미 존재하는 타입의 소스 코드가 없더라도 기능을 추가할 수 있게 해준다. 확장으로 추가할 수 있는 것들 연산 프로퍼티 인스턴스/타입 메소드 Convenience Initializer 서브스크립트 저장 프로퍼티는 추가할 수 없음! extension String { func getFirstChar() -> Character? { guard count > 0 else { return nil } return self[startIndex] } subscript(r: CountableClosedRange) -> String { get { let start = index(self.startIndex, offsetBy: r.lowerBound) let end = index(self.startI..
-
Swift4: Protocol Oriented Programming - 2.타입 선택POP 2021. 2. 14. 03:19
2장 타입 선택 타입 Swift에서 타입은 이름 있는 타입과 복합 타입으로 나뉜다. 이름 있는 타입은 클래스, 구조체, 열거형, 프로토콜 등이 있으며, 원시 타입이라 불리는 스위프트 표준 데이터 타입들은 모두 이름 있는 타입이다. 복합 타입은 타입을 정의할 때 이름을 부여하지 않은 타입을 말하며, 함수 타입과 튜플 등이 있다. typealias 를 이용하여 복합 타입에 별칭을 붙여 호출할 수도 있다. 또한, 참조 타입과 값 타입으로도 타입을 나눌 수 있다. 참조 타입 인스턴스를 전달하는 것은 원본 인스턴스의 참조를 전달하는 것으로, 두 참조가 같은 인스턴스를 공유한다는 뜻이다. : 클래스 값 타입 인스턴스를 전달할 때에는 인스턴스의 새로운 복사본을 전달하며, 각 인스턴스가 유일한 사본의 의미를 가진다. ..
-
Swift4: Protocol Oriented Programming - 1.프로토콜 시작POP 2021. 2. 12. 23:51
1장 프로토콜 시작 프로토콜(protocol) 프로토콜은 작업을 수행하기 위해 타입에서 필요로 하는 메소드, 프로퍼티 그리고 다른 요구사항을 정의하는 계약의 역할을 한다. 프로토콜 요구 사항 프로토콜에서 프로퍼티를 정의할 때에는 항상 get과 set 키워드로 프로퍼티가 읽기 전용인지 읽기 쓰기 프로퍼티인지 명시해줘야만 한다. 선택 가능한 요구사항 프로토콜 앞에 @objc 키워드를 붙여 선택 가능한 메소드나 프로퍼티를 프로토콜에 포함할 수 있다. 단, class만 해당 프로토콜을 채택 가능 프로퍼티나 메소드 앞에는 @objc optional 키워드를 붙인다 프로토콜 컴포지션 프로토콜 컴포지션은 class에서 단일 상속만 가능한 swift에서 객체의 요구사항을 구체적이고 중복없이 구현하도록 해준다. 깊이감 ..