0
에 제약 조건을 만드는 방법 난 단지 UIView
에서 상속 클래스에 의해 구현 될 수 프로토콜을 만들려고, 놀랍게도을 무엇이 코드 (SWIFT 3.0) 오류없이 컴파일 할 때 :프로토콜
protocol TestsProtocol {
func test()
}
extension TestsProtocol where Self: UIView { }
class FooClass: TestsProtocol {
func test() {
}
}
우리 FooClass
이 UIView
에서 상속받지 않는 것을 볼 수 있습니다. 프로토콜 확장을 사용하면 UIView
에서 상속받은 클래스 만이를 구현할 수 있습니다. 나는 Swift에서 컴파일하지 않을 것임을 기억한다.
Swift 2.1에서 컴파일되지 않는 이유에 대해 생각할 수 없습니다. 프로토콜 확장은 프로토콜을 준수 할 수있는 유형을 제한하지 않고 단지 기본 구현을 추가하도록합니다. 하지만 진짜 질문은 타입이 * 모든 프로토콜의 요구 사항을 충족 할 수 있는지, 왜 UIView가 아닌 경우에 * 준수해서는 안되는 이유입니까? – Hamish
가능한 특정 클래스 유형에만 적용 할 수있는 [extension]의 가능한 복제본 (http://stackoverflow.com/questions/41349324/extension-that-can-only-be-applied-on-a-given-class- 타입) - 거기에 대한 답은 네가 원하는 바를 정확히 믿을 수는 없다. 대답은 단순히 준수 유형을 기반으로 프로토콜 준수를 제한 할 수 없다는 것입니다. – Hamish