일단 이 질문에 답을 하려면 Singleton 패턴이 뭔지부터 알아봐야 한다.
싱글톤 패턴이란, 앱이 시작하고 종료할 때까지 하나의 인스턴스만 생성하고 사용하는 패턴을 의미한다.
그리고 프로그램의 전역에서, 이 인스턴스를 공유하면서 사용할 수 있게끔 하는 것이다.
자, 왜 사용하는지에 대해 알아보자.
만약에 똑같은 작업을 수행한다거나, 같은 데이터를 사용해야 하는 상황에 놓인다고 생각해보자.
그럼, 굳이 새로 인스턴스를 파서 그 같은 동작과 데이터를 사용해야 할까? 그렇게 한다면 용량, 성능 측면에서도 둘 다 비효율적이다.
따라서 그런 비효율적인 상황을 만들지 않기 위해 하나의 인스턴스를 놓고 사용하는 것이다.
왜 사용하는지에 대해 알아보았다.
그럼 이걸 어디서 사용을 할까?
상황을 만들어보자.
API 통신을 하는 3개의 뷰를 가진 iOS 앱이 존재한다고 하자. 각 뷰에서는 API와 통신을 하여 뷰에 맞는 정보들을 가져오게 된다. 또한 가져올 때 Codable 프로토콜을 준수하는 구조체로 JSON 파일에서 파싱을 할 수 있게끔 만들어 놓았다.
이때, 각 뷰에서 원하는 결과들을 얻기 위해 3개의 구조체 인스턴스를 생성하게 된다면, 공간의 낭비도 존재하고, 굳이 이래야 할까? 라는 생각이 들기 마련이다.
따라서 이 문제를 해결 하고자 싱글톤 패턴을 사용하게 된 것이다.
싱글톤 패턴을 사용하게 된다면, 하나의 구조체 인스턴스를 생성해놓고 각자 원하는 뷰의 정보들을 가져올 수 있게 되는 것이다.
문제. 당연히 존재한다.