티스토리 뷰
안녕하세요 :) Zedd입니다.
<Protocol(4)>글을 읽다가
문득..class와 AnyObject의 차이점을 알고싶어졌습니다.
위 사진은 한마디로, 프로토콜이 클래스타입에서만 채택되고 싶다! 하면 프로토콜 선언부에 AnyObject를 상속하게 하라! 입니다.
그런데.. 프로토콜을 class-only로 만들고 싶다면 한가지 방법이 더 있죠
protocol ZeddProtocol: class {
}
바로 프로토콜 선언부에 “class”를 써주면(상속받으면) 이 역시 class-only프로토콜이 됩니다.
class가 아닌곳에서 위 프로토콜을 채택하면
struct Zedd: ZeddProtocol {
}//error: non-class type 'Zedd' cannot conform to class protocol 'ZeddProtocol'
이렇게 에러를 뿜게됩니다.
그렇다면 class와 AnyObject의 차이점은??
결론: 둘은 같다. (class == AnyObject)
이제 밑에는 제가 같은걸 알게된 경로?이니 안보셔도 됩니다...
나와 같은 사람 ㄷ ㄷ
대충 요약하면 이 AnyObject를 상속한 프로토콜과 class를 상속한 프로토콜간의 차이가 있냐? 만약 (차이가) 없다면 왜 똑같은걸 두 방법으로 하게 했냐;;???
입니다.
어쩌구 저쩌구하지만
댓글들 난리남zzzz
다들 그래서 차이가 뭔데!!!!!!!!!!!
(저 답변 단 사람이 차이가 있다고 해놓고서는 차이를 보여주지 않는 예제를 남긴 것 같은데..제가 봐도 본 질문과는 조금 다른 포커스로 답변을 단 것 같아용)
결론만 말하자면.....차이가 없습니다.
왜냐면 Joe Groff가 똑같다고 하니깐...
그럼 왜 중복으로 두냐??라는 말에 Joe Groff의 마지막 답변을 해석해보면,
AnyObject 프로토콜은 우리가 ‘class'를 구현할 때까지 대리인(stand-in)이 되기로 했어. 그것을 끝낼 여유가 없어. (아직 (class 구현) 그걸 끝내지 못했어 ㅠ )
(..? 번역이 잘못됐다면 알려주세요..ㅜㅜ..)
아무튼 둘은 같다고 합니다~~XD
사실 class도 안에는..AnyObject...ㅎㅎ
아무튼.....class와 AnyObject의 차이점이 궁금한 분들에게 도움이 되었길 바랍니다 XD
'Swift' 카테고리의 다른 글
Swift ) Method Swizzling (1) | 2018.07.07 |
---|---|
Swift 4.2 변경사항 (3) | 2018.06.17 |
Swift ) FloatingPoint (0) | 2018.04.14 |
Swift 4.1 Released! -2 (0) | 2018.04.14 |
Swift ) Hashable (1) | 2018.04.10 |
- swift 공부
- swift3
- WWDC
- 제이슨 파싱
- Combine
- fastlane
- iOS delegate
- swift tutorial
- np-complete
- github
- Accessibility
- 회고
- Swift
- Git
- WKWebView
- actor
- Xcode
- UIBezierPath
- IOS
- WidgetKit
- SwiftUI
- swift array
- 피아노
- ios 13
- swift delegate
- 스위프트
- FLUTTER
- 스위프트 문법
- np-hard
- swift sort
- Total
- Today
- Yesterday