Some [불투명한 반환 타입 : Opaque Type] - SwiftUI 튜토리얼

2020. 10. 21. 21:48코딩/IOS 개발

SwiftUI를 처음 시작하면서 첫 번째 부딪친 난관이 Some키워드이다.

찾아봐도 어려운 설명밖에 없어서 정말 책부터 외국 블로그까지 다양하게 찾아보았다.

그 경험을 바탕으로 가장 쉬운방식으로 설명하려고 노력하였다.

 

 

 

 

SwiftUI의 단순하고 명료한 코드를 제공하는데 큰 역할을 하는 것이 이 Some이다.

C++기반으로 코딩을 처음배운 필자에게는 상당히 생소하였는데 (혹은 내가 공부를 안했던가)

찾아보니 void* 로 구성되는 핸들도 이와 비슷한 원리라고 한다.

C++을 모르시는 분들은 더 난해한 설명일테니 Swift만 보고 생각해보자.

 

Some은 불투명한 반환 타입(Opaque Type)을 표현하는 Swift의 키워드이다.

불투명한 반환 타입. 즉 반환타입이 잘 안보인다는 뜻인데 이건 코드의 은닉하게 해주는 목적때문에 붙여진 이름이다.

기능. 즉 Some이 돌아가는 작동을 생각하면 포괄적 반환 타입이란 말이 맞지 않을까싶다.

 

var body: some View{
	//코드 내용
}

일반적으로 이런 방식으로 쓰여있다.

위 코드의 의미는 View 프로토콜을 준수하는 모든 타입의 결과가 반환될 수 있다는 말이다.

혹시 프로토콜을 모른다면 프로토콜에 대한 내용은 추후 기술하겠다.

 

 

왜 저런 타입이 필요한지 생각해보자.

 

첫번째는 단순성이다.

일반적인 프로그래밍의 경우 다양한 타입을 쓰게될테니 크게 필요성을 느끼지 못하지만

SwiftUI의 경우 크고작은 View의 조합으로 화면을 구성해나가게 된다.

사용하는 대다수의 객체가 View프로토콜을 준수할 가능성이 높다.
some을 사용하면 View끼리 주고받기가 매우 편리해진다

또한 그 연결 또한 자유롭게 된다.

 

두번째로는 은닉성이다.

위 코드의 Some의 의미는 Veiw프로코콜을 준수하면 뭐든지 반환가능하다는 의미라고 했다.

그렇다면 View프로토콜만 넣어주면 OK이기 때문에 타입의 유추가 불가능하게 된다.

타입을 통해 코드의 기능을 유추할 수 있기 때문에 이러한 문제를 원천 차단해준다. 

 

 

Some은 SwiftUI프로젝트를 만들면 바로 나오는 키워드이지만 다소 이해하기 어려웠다.

(정보가 없어서 or 내가 멍청해서)

컴퓨터 공학적으로 보면 더 깊은 내용이 있을 수 있지만 최대한 쉬운 설명을 하기 위해 노력하였다.

혹시 틀린 설명이 있다면 덧글을 달아주길 바란다.

 

'코딩 > IOS 개발' 카테고리의 다른 글

SwiftUI란? - SwiftUI 튜토리얼  (0) 2020.10.18