iOS/Common

[Swift] method는 class, struct, enum 중 어느 곳에 쓰는 게 좋은가

TDCIAN 2023. 6. 16. 17:07

 

 

Q. Swift로 iOS Application을 개발할 때, method를 각각 class, sturct, enum 내부에 선언하는 방법과 각각의 장점을 설명해 줘 

 

A. Swift에서 iOS 애플리케이션을 개발할 때, method를 class, struct, enum 내부에 선언하는 방법과 각각의 장점에 대해 설명해 드리겠습니다.

 

1. Class 내부에 선언하는 방법

- Class는 참조 타입이며, 상속이 가능합니다.

- Method는 class의 인스턴스에 속하게 됩니다.

- Class 내부에 선언된 method는 상속과 다형성을 활용할 수 있어 유연성이 높습니다.

- Class의 인스턴스 간 데이터를 공유하고 변경할 수 있습니다.

- Method는 인스턴스 속성에 접근할 수 있으므로 인스턴스의 상태를 변경하는 작업을 수행할 수 있습니다.

 

2. Struct 내부에 선언하는 방법

- Struct는 값 타입이며, 상속이 불가능합니다.

- Method는 struct의 인스턴스에 속하게 됩니다.

- Struct 내부에 선언된 method는 구조체의 속성을 변경할 수 있습니다.

- Struct는 스택에 저장되며, 복사되기 때문에 메모리 관리가 간단합니다.

- 스레드 간의 안전성을 보장하기 위해 값 타입인 Struct를 사용하는 것이 유리할 수 있습니다.

 

3. Enum 내부에 선언하는 방법

- Enum은 열거형 타입으로, 유한한 선택지를 나타내기 위해 사용됩니다.

- Method는 enum의 멤버에 속하게 됩니다.

- Enum 내부에 선언된 method는 각 멤버에 대한 동작을 정의할 수 있습니다.

- Enum은 패턴 매칭을 통해 다양한 동작을 처리하기에 용이합니다.

- Enum은 각 멤버가 고유한 상태나 특징을 가질 수 있습니다.

 

각각의 장점은 다음과 같습니다.

(1) Class

상속과 다형성을 활용하여 유연성이 높은 구조를 만들 수 있습니다. 객체 간 데이터 공유와 변경이 가능하며, 동적인 행동을 구현할 수 있습니다.

(2) Struct

값 타입으로 스택에 저장되므로 메모리 관리가 간단합니다. 스레드 간의 안전성이 요구되는 경우 유리할 수 있습니다.

(3) Enum 

유한한 선택지를 나타내는 경우 사용됩니다. 패턴 매칭을 통해 다양한 동작을 처리하기에 용이하며, 각 멤버가 고유한 상태나 특징을 가질 수 있습니다.

 

앱의 구조와 요구 사항에 맞게 클래스, 구조체 또는 열거형을 선택해야 합니다. 각각의 타입은 특정 상황과 목적에 적합합니다. 예를 들어, 다음과 같은 경우에는 다른 타입을 선택하는 것이 적합합니다.

 

(1) Class를 사용하는 경우

- 상속이 필요한 경우 

- 공유 데이터 모델을 만들어야 하는 경우

- 참조 타입으로 동작하는 기능이 필요한 경우

 

(2) Struct를 사용하는 경우

- 값을 전달하거나 복사할 때 독립성을 유지해야 하는 경우

- 메모리 관리가 간편한 경우

- 상속이 필요하지 않은 경우

 

(3) Enum을 사용하는 경우

- 유한한 선택지를 가지는 경우

- 각 선택지에 대해 특정 동작을 구현해야 하는 경우

- 패턴 매칭을 활용해 복잡한 조건 분기를 처리해야 하는 경우

 

물론, 이러한 가이드라인은 절대적인 것은 아니며 상황에 따라 다를 수 있습니다. 앱의 요구 사항, 구조, 확장성, 성능 등을 고려하여 적절한 타입을 선택해야 합니다. 

 

 

 

출처: ChatGPT(https://chat.openai.com/)

 

참고할만한 공식 문서

https://docs.swift.org/swift-book/documentation/the-swift-programming-language/methods/

 

Documentation

 

docs.swift.org