왜 {get} assign?!

2408 단어 Swift
기어오르는 편은 { get }{ get set }에 관한 기초 필기다.

문제점


최근에 발견된 것은 무엇으로 정의된 속성이 무엇입니까?
그러나 팝을 실천할 때 너무 이성적이라 소홀히 하거나 프로토콜 유형으로 지정하기 전에 프로토콜을 둘러싼 진정한 제한을 만드는 방법을 가져오고 좋고 나쁨을 떠나 적어두기로 했다.

예제


이런 정의.
protocol A: class {
    var a: String! { get }
}

class AClass: A {
    var a: String!
    init() {}
}
assign 값에 사용할 수 있는 실제 작업은 기어오르는 모습입니다.
let a1 = AClass()
a1.a = "some text"
편집기는 불평하지 않습니다.runtime도 똑같이 찍었습니다.
왜냐하면 a1은 { get } 성분의 A이 있지만 컴파일러에게는 AClass, 프로토콜AClass의 우선도가 오히려 높기 때문이다.
그렇다면 명확하게 나를 지목한 횟수는 프로토콜A이다.
let a2: A = AClass()
a2.a = "some text"
Xcode는 기대하는 불평입니다.

환경


Xcode 11.3.1, Playground

참고


  • https://docs.swift.org/swift-book/LanguageGuide/Protocols.htmlA
  • 좋은 웹페이지 즐겨찾기