Lined Notebook

where Self: 이 무엇인가..

by 사슴비행기

다른 사람의 코드를 여러개 보다 보면 "이게 뭐지????" 하는 코드들이 있다.

(내 실력이 부족한 탓..ㅠ)

 

내가 본 where Self를 사용하는 코드 ▼

https://medium.com/@arturchabera/skeleton-view-alternative-for-loading-indicator-765d98cca2eb

 

Skeleton view — alternative for loading indicator

Imagine this scenario: - Client wants an app - App has external API - API is sending response - Response comes after a while - While data…

medium.com

 

구글링을 해보니 `이 protocol의 extension을 특정 protocol을 상속했을 때만 사용될 수 있도록 하는 제약조건 추가 기능`이라고 함

그리고 여기서 사용되는 where특정 패턴과 결합해서 조건을 추가하는 역할을 하는 keyword라고 한다.

extension SkeletonDisplayable where Self: UIViewController {
//something..
}

즉, 이 extension에서 만든 메서드와 프로퍼티는 UIViewController를 상속받지 않은 곳에서는 사용할 수 없음 !

 

 

더 쉬운 이해를 위해 예시를 들어보면

protocol where Self 예시

위에서 보는 것 처럼, UIViewController를 상속받았을 때만 사용할 수 있게 프로토콜을 확장했고

Foo 클래스는 UIViewController를 상속받아서 extension으로 확장한 기능을 사용할 수 있었지만

Bar 클래스 처럼 UIViewContrller가 아닌 NSObject를 상속받은 클래스는 extension에 확장한 메서드에 접근할 수 없다.

 

에러문구를 해석해보면,

SomethingWrong에서 인스턴스 메서드 'callThePolice()'를 참조하려면 'Bar'가 UIViewController에서 상속되어야 한다.

라고 되어 있음.

 

 

 

 

 

 

- 참고한 글들 모두 첨부 !! -

 

 

what is 'where self' in protocol extension

I saw so many examples with below format extension Protocolname where Self: UIViewController What is where Self in protocol extension. I couldn't find the documentation on this.

stackoverflow.com

 

[Swift3] where절 사용하기

'스위프트 프로그래밍, 26장'을 인용하였다 Swift에서 where절은 특정 패턴과 결합하여 조건을 추가하는 ...

blog.naver.com

 

[Swift] 키워드 목록 (Keyword LIst)

swift 키워드 목록은 다음과 같다. Keywords used in declarations associatedtypeclassdeinitenumextensi...

blog.naver.com

 

블로그의 정보

Beautiful Coding

사슴비행기

활동하기