Protocol

seocho·2022년 8월 8일
0

iOS

목록 보기
1/24

프로토콜은 특정 기능 수행에 필수적인 요수를 청의한 청사진(blueprint)입니다.
(c++의 interface랑 비슷하다고 생각한다)

프로퍼티 요구사항

필수 프로퍼티는 항상 var로 선언해야 한다
=> var 키워드의 가변성과는 아무런 관계가 없음.

protocol SomeProtocol {
    var mustBeSettable: Int { get set }
    var doesNotNeedToBeSettable: Int { get }
    static var someTypeProperty: Int { get set }
}

타입 프로퍼티 참고 자료

변경 가능한 메소드 요구사항

mutating 키워드를 사용해 인스턴스에서 변경 가능하다는 것을 표시할 수 있습니다. 이 mutating 키워드는 값타입 형에만 사용합니다.

protocol Togglable {
    mutating func toggle()
}

enum OnOffSwitch: Togglable {
    case off, on
    mutating func toggle() {
        switch self {
        case .off:
            self = .on
        case .on:
            self = .off
        }
    }
}
var lightSwitch = OnOffSwitch.off
lightSwitch.toggle()

선택적 프로토콜 요구조건 (Optional Protocol Requirements)

선택적 구현 조건을 정의할 수 있다.

@objc protocol CounterDataSource {
    @objc optional func increment(forCount count: Int) -> Int
    @objc optional var fixedIncrement: Int { get }
}
profile
iOS 개린이

0개의 댓글