본문 바로가기

iOS/iOS 기술 면접

AnyObject

AnyObject | Apple Developer Documentation

 

AnyObject | Apple Developer Documentation

The protocol to which all classes implicitly conform.

developer.apple.com

AnyObject는 특정하지 않은 타입에 대해 동작하도록 만들어진 타입임

이와 유사한 타입으로 Any도 있습니다!

그리고 타입 캐스팅과도 살짝 연관이 있는데 타입 캐스팅을 하려면 상속관계에 있어야 하잖아요??

근데 Any나 AnyObject 타입일 경우는 상속 관계가 아니더라도 ㄱ가능해집니다!

AnyObject

  • 모든 클래스가 암시적으로 준수하는 프로토콜

클래스, 클래스 타입, 클래스-only 프로토콜에서 타입으로 사용할 수 있는 프로토콜입니다.

객체의 유연성이 필요하거나 objc 코드의 결과 반환에 사용할 수 있습니다

Any

  • 모든 타입의 인스턴스를 나타낼 수 있음

AnyObject의 경우는 클래스 타입만 나타낼 수 있었으나 Any는 전부 상관없이 모든 타입을 나타낼 수 있음!

그럼 왜 쓸까요?

다양한 타입에 범용적으로 사용할 수 있다는 장점 때문에 씁니다.

→ 타입에 대해 좀 유연하게 사용할 수 있음. (근데 스위프트는 타입에 민감해서 좋은건 아닌거 아닌가요..?)

근데 단점은 머지

  • 범용적으로 쓸 수 있지만 이 때문에 사용시마다 타입 체크를 한 후 형변환을 해줘야함

→ 그래서 꼭 써야 하는 경우가 아니라면 안쓰는게 좋음

그리고 얘네들을 쓰면 타입이 런타임 시점에서 결정이 나기 때문에 String, Int 등의 메서드나 프로퍼티를 사용할 수가 없음

사실 정말 간단하게만 알아봤구 자세한 내용은 아래 블로그에 엄청 자세히 있으니까 참조 바랍니당

 

Swift) is, as - 타입 캐스팅 (Type Casting)

 

Swift) is, as - 타입 캐스팅 (Type Casting)

안녕하세요, 소들입니다!!!! 오늘 포스팅은 is와 as 즉, 타입 캐스팅에 대해 알아보려고 해요 :D 타입 캐스팅,,, 개발 하다보면 가끔 보이는.. is as as? as! 막 ... 이렇게... 단어 하나갖고 장난질이여;;;

babbab2.tistory.com

 

'iOS > iOS 기술 면접' 카테고리의 다른 글

Struct는 뭐고 어떻게 사용할까?  (0) 2023.11.02
Optional  (1) 2023.11.02
Convenience init  (1) 2023.10.31
Copy On Write는 어떤 방식으로 동작할까?  (0) 2023.10.31
Class의 성능을 향상 시킬 수 있는 방법  (1) 2023.10.31