콘텐츠로 건너뛰기
Home » Opaque Type

Opaque Type

Opaque 리턴타입(Swift 5.1)

이 블로그의 다른 글에서 Swift의 타입 지우기에 대해서 살펴본 바 있습니다. 특정한 연관 타입에 의존하지 않는 프로토콜은 그 자체로 타입처럼 취급될 수 있지만, 연관 타입에 의존하는 프로토콜은 일종의 제네렉과 비슷하기 때문에 구체적인 타입처럼 사용될 수 없습니다. 타입 지우기(Type Erasure)는 특정한 프로토콜을 따르는 Any 타입을 만들어서 프로토콜을 채택한 실제 타입을 감추고 프로토콜의 기능적 잇점은 누릴 수 있게 하는 기법입니다. 하지만 타입 지우기를 사용하려면 특정 타입을 감싸는 별도의 타입을 만들어야 하고, 성능상으로도 오버헤드가 발생하는 제약이 있습니다. Swift는 프로토콜을 실제 구체적인 타입으로 사용할… 더 보기 »Opaque 리턴타입(Swift 5.1)

[c/objetive-c] 불투명 타입

불투명타입(Opaque Type)

코어 파운데이션 관련 문서를 보면 불투명타입(Opaque Type)이라는 말이 자주 나온다. 코어 파운데이션에서 객체처럼 사용되는 모든 타입들은 불투명타입(CFArrayRef, CFStringRef 등등)이다. "불투명"하다고 해서 감이 쉽게 오지 않는데, 간단히 풀어 쓰자면 "내부의 데이터 구조를 들여다볼 수 없는 타입"이라고 보면 된다.

코코아에서 객체를 만들 때 인스턴스 변수는 기본적으로 protected 나 private으로 만들어지기 때문에 이러한 인스턴스 변수는 객체가 이를 읽거나 쓸 수 있는 메소드(accessor)를 제공하지 않는 이상 객체 속에 어떤 변수들이 있는지 외부에서는 알 수 없다.

더 보기 »[c/objetive-c] 불투명 타입