iOS/Swift

[Trouble] protocol get set

코르피 2023. 3. 28. 13:15
반응형
protocol SampleProtocol {
    var x: Int { get }
}

struct SampleStruct: SampleProtocol {
    var x: Int
}

var sample: SampleStruct = SampleStruct(x: 10)

sample.x = 20

print(sample.x) // prints 20

 

프로토콜내에서 get, set을 설정해주는 경우

sample 변수가 SampleStruct타입이 되면

protocol의 x가 read-only 임에도 불구하고 x값이 변환이된다.

 

어노테이션을 해주지 않아 타입추정을 하게되는 등,

타입이 SampleStruct가 되면 Struct를 생성하기 때문에 별 관계없는 상태가 된다.

protocol SampleProtocol {
    var x: Int { get }
}

struct SampleStruct: SampleProtocol {
    var x: Int
}

var sample: SampleProtocol = SampleStruct(x: 10)

sample.x = 20 // *Error: Cannot assign to property: 'x' is a get-only property

print(sample.x)

 

위처럼 Protocol로 타입을 받아주면 의도했던대로 오류가 난다. 

반응형