티스토리 뷰

반응형

안녕하세요 :) 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