싱글톤이란 프로젝트 전체에서 하나밖에 존재하지 않는 유일한 클래스의 인스턴스를 의미합니다

 

싱글톤이란?

싱글톤은 디자인 패턴에서 생성 패턴에 해당하며 프로그램 내의 하나의 인스턴스만 생성하여 어디서든 해당 인스턴스를 접근할 수 있도록 해줍니다.

 

싱글톤을 사용하는 이유는?

  • 싱글톤을 사용하게 된다면 하나의 인스턴스만 생성하기 때문에 메모리의 사용량이 줄어들어 메모리 사용을 최적화할 수 있습니다.
  • 여러 곳에서 같은 인스턴스를 사용하기 때문에 리소스의 사용을 줄일 수 있습니다.

싱글톤을 사용했을 때 단점은?

  • 싱글톤은 전역 상태를 유지하기 때문에 테스트가 어려울 수 있습니다. 즉 하나밖에 존재하지 않는다는 장점이 단점이 될 수 있다는 뜻입니다.
  • 싱글톤을 사용하게 된다면 다른 클래스들이 싱글톤 인스턴스에 의존하게 되므로 코드의 유연성이 떨어질 수 있게 됩니다.

싱글톤 말고 다른 방법

swift에서는 싱글톤을 제외하고도 다른 방법으로 프로젝트 내에서 데이터를 공유하는 방법이 물론 존재합니다. EnvironmentObject 를 사용하게 된다면 여러 뷰에서 동일한 데이터를 공유하고 변경할 수 있으며 뷰에 대응도 가능하게 됩니다.

EnvironmentObject는 뷰 간 데이터 공유를 쉽게 구현하고, 뷰 간 결합도를 낮춰서 재사용 가능한 뷰를 만드는 데에 유용합니다.

 

차이점 싱글톤 EnvironmentObject
생성 방법 클래스의 init( ) @EnvironmentObject 프로퍼티 래퍼
생성 시기 앱이 시작할 때 생성 View 계층에 처음 추가될 때
생성 위치 앱 코드의 특정 위치 View 계층
생명 주기 전역변수로 계속 메모리에 존재하다 앱 종료전까지 유지 View가 사라지면 같이 삭제
접근 방법 전역 접근 가능 View 계층 내에서 액세스 가능

결론

싱글톤을 사용하는 것은 사용하기 편리하다는 장점이 있지만 메모리를 효율적으로 관리하기 위해서는 EnvironmentObject가 더 적합합니다. 사용해야 하는 상황은 케바케이므로 적절하게 상황에 맞게 사용하는 것을 추천합니다.

 

  • EnvironemntObject: 뷰 계층 구조에서 공유해야 하는 데이터, 예를 들어 사용자 인증 정보, UI 테마 설정 등을 전달하기 위해 사용됩니다.
  • Singleton: 앱 전반에 걸쳐 공유해야 하는 리소스, 예를 들어 데이터베이스 연결, 로그 관리, 네트워크 연결 등을 관리하기 위해 사용됩니다.

 

ytw_developer