본문 바로가기

프로토콜2

Swift 심화 학습하기 (프로토콜, Never 타입, #keyPath와 #selector, 메타타입, availability) 프로토콜 Equatable 프로토콜 동일성 비교를 위한 프로토콜이다. 스위프트에서 제공하는 기본타입은 모두 채택하고 있다. 아래 메서드 구현이 해당 프로토콜의 요구사항이다. static func == (lhs: Self, rhs: Self) -> Bool 구조체, 열거형의 경우 Equatable 프로토콜 채택 시 모든 저장 속성이 Equatable 프로토콜을 채택한 타입이라면 비교연산자 메서드가 자동 구현된다. 단, 예외 케이스가 몇 가지 존재한다. 1) 클래스는 인스턴스를 비교하는 항등연산자(===)가 존재하기 때문에 비교연산자(==)는 개발자에게 구현이 위임된다. 2) 열거형의 경우 연관값이 없다면 기본적으로 Equatable, Hashable하기 때문에 Equatable 프로토콜을 채택하지 않아도 .. 2023. 8. 30.
Swift 프로토콜(Protocols) 클래스와 상속의 단점 하나의 클래스만 상속이 가능함. 즉, 다중 상속 불가능 기본적인 상위클래스의 메모리 구조를 따라갈 수 밖에 없음 (필요하지 않은 속성과 메서드도 상속됨) 클래스(레퍼런스 타입)에서만 가능 프로토콜 위 클래스에만 가능한 상속의 여러 문제를 해결하기 위해 나온 문법 실생활에서는 자격증의 개념으로 이해하면 쉬움 구체적인 구현을 하지 않음, 요구사항을 정의함. 구체적인 구현은 프로토콜을 채택한 곳에서 구현 class에서는 상속도 프로토콜도 채택하고 싶은 경우 상속하고자 하는 상위클래스를 먼저쓰고 프로토콜을 적으면 됨 상속과 달리 프로토콜은 다중 채택이 가능함으로 ,로 구분해 적으면 됨 protocol CanFly { func fly() } struct Bird: CanFly { func f.. 2023. 8. 1.