2016-09-08 2 views
3

스위프트 프로토콜은 다른 프로토콜 방법 및 속성으로 정의 된 기본 구현으로 볼 수있는 확장을 허용합니다. 때로는 이러한 확장에 첨부 된 조건이 있지만 때로는 와일드 카드 일뿐입니다. 따라서 이 실제로을 프로토콜을 준수하는 객체에 구현해야하는지 파악하기가 약간 어렵습니다. 네 다음 스위프트 (Swift) : 어떤 프로토콜 방법과 속성을 실제로 구현해야하는지 파악하고 있습니까?

public func generate() -> Self.Generator 
public subscript (position: Self.Index) -> Self.Generator.Element { get } 
public subscript (bounds: Range<Self.Index>) -> Self.SubSequence { get } 
public func prefixUpTo(end: Self.Index) -> Self.SubSequence 
public func suffixFrom(start: Self.Index) -> Self.SubSequence 
public func prefixThrough(position: Self.Index) -> Self.SubSequence 
public var isEmpty: Bool { get } 
public var count: Self.Index.Distance { get } 
public var first: Self.Generator.Element? { get } 

그러나 실제로

이 모든 것이 이미 제외 와일드 카드 확장에 정의되어있다 : 예를 들어, CollectionType 명목상 메서드 및 속성을 구현 한 다음 (최상위)가 필요

public func generate() -> Self.Generator 
public subscript (position: Self.Index) -> Self.Generator.Element { get } 
public subscript (bounds: Range<Self.Index>) -> Self.SubSequence { get } 
public var count: Self.Index.Distance { get } 

심지어이 중에서도 특정 경우에 subscript (bounds: Range<Self.Index>)generate()이 제공됩니다.

어떤 프로토콜 방법과 속성이 이 아닌지 한눈에 알 수있는 방법이 있습니까?은 확장으로 정의되어 있습니까?

답변

1

Xcode 8에서는 프로토콜 P를 상속 한 클래스를 만들면 정의되지 않은 함수 나 속성으로 인해 클래스 옆에 빨간색 오류 글 머리 기호가 표시됩니다. 클릭하면 스텁 함수를 정의하도록 선택할 수 있습니다. 확장 기능에 아직 정의되지 않은 기능 만 생성됩니다.

내가 본 것만 큼 (더 좋은 대답이 있다면 나는 그것을 보게되어 행복 할 것이다) 그것이 당신이 할 수있는 최선의 결과이다.

관련 문제