싱글톤이란 프로젝트 전체에서 하나밖에 존재하지 않는 유일한 클래스의 인스턴스를 의미합니다
싱글톤이란?
싱글톤은 디자인 패턴에서 생성 패턴에 해당하며 프로그램 내의 하나의 인스턴스만 생성하여 어디서든 해당 인스턴스를 접근할 수 있도록 해줍니다.
싱글톤을 사용하는 이유는?
- 싱글톤을 사용하게 된다면 하나의 인스턴스만 생성하기 때문에 메모리의 사용량이 줄어들어 메모리 사용을 최적화할 수 있습니다.
- 여러 곳에서 같은 인스턴스를 사용하기 때문에 리소스의 사용을 줄일 수 있습니다.
싱글톤을 사용했을 때 단점은?
- 싱글톤은 전역 상태를 유지하기 때문에 테스트가 어려울 수 있습니다. 즉 하나밖에 존재하지 않는다는 장점이 단점이 될 수 있다는 뜻입니다.
- 싱글톤을 사용하게 된다면 다른 클래스들이 싱글톤 인스턴스에 의존하게 되므로 코드의 유연성이 떨어질 수 있게 됩니다.
싱글톤 말고 다른 방법
swift에서는 싱글톤을 제외하고도 다른 방법으로 프로젝트 내에서 데이터를 공유하는 방법이 물론 존재합니다. EnvironmentObject 를 사용하게 된다면 여러 뷰에서 동일한 데이터를 공유하고 변경할 수 있으며 뷰에 대응도 가능하게 됩니다.
EnvironmentObject는 뷰 간 데이터 공유를 쉽게 구현하고, 뷰 간 결합도를 낮춰서 재사용 가능한 뷰를 만드는 데에 유용합니다.
차이점 | 싱글톤 | EnvironmentObject |
생성 방법 | 클래스의 init( ) | @EnvironmentObject 프로퍼티 래퍼 |
생성 시기 | 앱이 시작할 때 생성 | View 계층에 처음 추가될 때 |
생성 위치 | 앱 코드의 특정 위치 | View 계층 |
생명 주기 | 전역변수로 계속 메모리에 존재하다 앱 종료전까지 유지 | View가 사라지면 같이 삭제 |
접근 방법 | 전역 접근 가능 | View 계층 내에서 액세스 가능 |
결론
싱글톤을 사용하는 것은 사용하기 편리하다는 장점이 있지만 메모리를 효율적으로 관리하기 위해서는 EnvironmentObject가 더 적합합니다. 사용해야 하는 상황은 케바케이므로 적절하게 상황에 맞게 사용하는 것을 추천합니다.
- EnvironemntObject: 뷰 계층 구조에서 공유해야 하는 데이터, 예를 들어 사용자 인증 정보, UI 테마 설정 등을 전달하기 위해 사용됩니다.
- Singleton: 앱 전반에 걸쳐 공유해야 하는 리소스, 예를 들어 데이터베이스 연결, 로그 관리, 네트워크 연결 등을 관리하기 위해 사용됩니다.
'SwiftUI' 카테고리의 다른 글
aligmentGuide (0) | 2024.04.21 |
---|---|
Combine 이용해서 API로 JSON 다운받기 (0) | 2024.04.21 |
NSCache 인터넷으로 가져온 데이터 캐시에 임시 저장하기 (0) | 2024.04.19 |
RotationGesture 제스처로 돌리기 (0) | 2024.04.18 |
MagnificationGesture 로 확대 축소하기 (0) | 2024.04.14 |