티스토리 뷰

반응형

 

 

Protocol, Identifiable
프로토콜, Identifiable

iOS의 swift 프로토콜 중 Identifiable이 있습니다. 안정적 신원을 가진 개체 값을 잡고 있는 인스턴스 타입을 정의할때 채택하여 사용하는 프로토콜이라고 합니다.

Identifiable은 Combine, SwiftUI 프레임워크가 탄생한 iOS13 이후부터 사용이 가능한 프로토콜이며, Xcode 11.0버전 이상에서 사용이 가능합니다.

Identifiable 프로토콜의 일부 구현부를 보겠습니다.

 

 

 

먼저 사용가능한 개발환경을 @available annotation으로 정의하고 있고, 이어서 Identifiable이 protocol로 정의되어 있습니다.

1359 line) 인스턴스와 관련한 개체의 독립적 신원을 표현하는 ID타입이 정의되어있습니다. 이 타입은 각 값의 유일성을 보장하는 경우에 사용되는 Hashable 프로토콜을 채택하고 있습니다. (swift 자료구조인 dictionary의 중복값을 허용하지 않는 key값도 Hashable을 채택하고 있습니다.)

1361 line) Identifiable 프로토콜을 채택하는 타입의 ID 읽기전용 변수를 규약으로 정의하고 있습니다. 이 변수는 인스턴스와 관련된 개체의 독립적 신원을 표현합니다.

 


Overview
개요

Identifiable 프로토콜은 Swift 표준 라이브러리에 속해있습니다. 참조ㅂ타입인 Class나 값타입 신원에 대한 안정적 개념을 제공하기 위해 Identifiable 프로토콜을 채택하여 사용할 수 있습니다.

 그 예를 들자면, 앱과 앱의 DB 저장소등에 걸쳐 안정적인 프로퍼티, id를 가진 User타입을 정의할 수 있습니다. (이때 User타입은 Identifiable프로토콜을 채택하게 됨) 이후 User타입의 name필드와 같은 데이터 필드가 수정되는 경우 등에 특정 User타입 인스턴스를 구분하 수 있는 id 프로퍼티를 사용가능합니다.

 Identifiable 프로토콜은 지속기간나 범위를 지정하지 않은 상태로 놓습니다. 개체들은 아래와 같은 특성을 지닐 수 있습니다.

1) 항상 고유성을 유지합니다. 예를들면 UUIDs(Universally Unique Identifiers, 범용 고유 식별자)와 비슷
2) DB record keys와 같이 환경 마다 지속적으로 고유성을 갖습니다.
3) 전역적으로 증가하는 정수 값과 같이 프로세스의 동작시간 동안 고유성을 갖습니다.
4) 객체 식별자들 처럼 객체의 생애시간 동한 고유성을 갖습니다.
5) 컬렉션 계수범위(indices)와 같이 현재 컬렉션 내에서 고유성을 갖습니다.

신원의 특성을 문서화하는 것은 프로토콜을 채택한 곳, 수신한 곳 두 곳에 달려있습니다.

 

 


Conforming to the Identifiable Protocol
Identifiable Protocol 채택하기

Identifiable 프로토콜은 class 타입(ObjectIdentifier를 사용하는)을 위한 기본 구현을 제공하고 있습니다. 이는 객체가 살아있는 동안 고유성을 유지하는 것을 보장해줍니다. 만약 어떤 어떤 객체가 강한 신원 개념을 지니고 있다면, 이에 대한 커스텀 구현을 제공하는 것이 적절할 수 있습니다.

 

 

 

반응형
댓글
반응형
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함