where Self: 이 무엇인가..
by 사슴비행기다른 사람의 코드를 여러개 보다 보면 "이게 뭐지????" 하는 코드들이 있다.
(내 실력이 부족한 탓..ㅠ)
내가 본 where Self를 사용하는 코드 ▼
https://medium.com/@arturchabera/skeleton-view-alternative-for-loading-indicator-765d98cca2eb
구글링을 해보니 `이 protocol의 extension을 특정 protocol을 상속했을 때만 사용될 수 있도록 하는 제약조건 추가 기능`이라고 함
그리고 여기서 사용되는 where은 특정 패턴과 결합해서 조건을 추가하는 역할을 하는 keyword라고 한다.
extension SkeletonDisplayable where Self: UIViewController {
//something..
}
즉, 이 extension에서 만든 메서드와 프로퍼티는 UIViewController를 상속받지 않은 곳에서는 사용할 수 없음 !
더 쉬운 이해를 위해 예시를 들어보면
위에서 보는 것 처럼, UIViewController를 상속받았을 때만 사용할 수 있게 프로토콜을 확장했고
Foo 클래스는 UIViewController를 상속받아서 extension으로 확장한 기능을 사용할 수 있었지만
Bar 클래스 처럼 UIViewContrller가 아닌 NSObject를 상속받은 클래스는 extension에 확장한 메서드에 접근할 수 없다.
에러문구를 해석해보면,
SomethingWrong에서 인스턴스 메서드 'callThePolice()'를 참조하려면 'Bar'가 UIViewController에서 상속되어야 한다.
라고 되어 있음.
- 참고한 글들 모두 첨부 !! -
'swift > basic knowlege of programming' 카테고리의 다른 글
UIFont.TextStyle 비교 (0) | 2021.10.03 |
---|---|
UILabel size를 Text size에 맞추는 방법(혹은 그 반대) (3) | 2021.10.03 |
Swift 소수점 다루기, 소수점 제거하기, 소수점 제거 함수 (0) | 2021.10.01 |
Swift 변수 주변에 `기호 의미 (variable surrounded backticks(grave accent = `)) (0) | 2020.01.07 |
safe area 가져오는 시점 (0) | 2019.12.26 |
블로그의 정보
Beautiful Coding
사슴비행기