iOS/코드조각

[iOS, Swift] 싱글턴 구현

검은참깨두유vm 2023. 3. 23. 18:48
반응형

iOS 15.5, Xcode 13.31, Swift 5, UIKit 환경에서 진행했습니다.

 

class UserInfo {
    static let shared = UserInfo()
    private init() { }
}

 

싱글턴 패턴은 객체지향 디자인 패턴 중 하나로, 어떤 클래스가 최대 1개의 인스턴스만 가지고 있도록 보장하는 것입니다. 이를 통해 객체의 생성과 파괴가 지나치게 빈번하게 일어나지 않도록 하고, 메모리 사용량을 줄이는 등의 이점을 얻을 수 있습니다.

위의 코드 조각에서는 UserInfo 클래스를 싱글턴으로 구성하였습니다. static let shared를 이용하여 UserInfo 클래스의 인스턴스를 단 하나만 생성할 수 있도록 하였고, private init()으로 객체 생성을 외부에서 할 수 없도록 만들었습니다.

싱글턴 패턴의 장점은 다음과 같습니다.

- 객체의 생성과 파괴가 빈번하게 일어나지 않기 때문에 메모리 사용량을 줄일 수 있습니다.
- 전역 변수로 사용할 수 있어서, 다른 객체들이 쉽게 접근하여 사용할 수 있습니다.
- 여러 개의 인스턴스가 생성되는 것을 방지할 수 있습니다.

하지만 싱글턴 패턴을 사용하는 것은 항상 좋은 것은 아닙니다. 다음과 같은 단점이 있습니다.

- 객체가 전역으로 사용되기 때문에, 객체의 상태 변화가 다른 객체에 영향을 미칠 수 있습니다.
- 멀티스레드 환경에서 사용할 때는 동기화 문제가 발생할 수 있습니다.

그러므로, 싱글턴 패턴은 전역적이고 상태 변화가 적은 객체를 사용할 때 적합합니다. 또한, 한 번 생성한 객체를 계속해서 사용해야 할 때 유용합니다. 예를 들어, 애플리케이션의 설정 정보나, 데이터베이스 연결 객체 등이 이에 해당합니다.

반응형