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()으로 객체 생성을 외부에서 할 수 없도록 만들었습니다.
싱글턴 패턴의 장점은 다음과 같습니다.
- 객체의 생성과 파괴가 빈번하게 일어나지 않기 때문에 메모리 사용량을 줄일 수 있습니다.
- 전역 변수로 사용할 수 있어서, 다른 객체들이 쉽게 접근하여 사용할 수 있습니다.
- 여러 개의 인스턴스가 생성되는 것을 방지할 수 있습니다.
하지만 싱글턴 패턴을 사용하는 것은 항상 좋은 것은 아닙니다. 다음과 같은 단점이 있습니다.
- 객체가 전역으로 사용되기 때문에, 객체의 상태 변화가 다른 객체에 영향을 미칠 수 있습니다.
- 멀티스레드 환경에서 사용할 때는 동기화 문제가 발생할 수 있습니다.
그러므로, 싱글턴 패턴은 전역적이고 상태 변화가 적은 객체를 사용할 때 적합합니다. 또한, 한 번 생성한 객체를 계속해서 사용해야 할 때 유용합니다. 예를 들어, 애플리케이션의 설정 정보나, 데이터베이스 연결 객체 등이 이에 해당합니다.
'iOS > 코드조각' 카테고리의 다른 글
[iOS, Swift] Object to Dictionary 형변환 (0) | 2023.03.24 |
---|---|
[iOS, Swift] Any to String 형변환 (0) | 2023.03.22 |
[iOS, Swift] UILabel Highlight 효과주기 (0) | 2023.03.19 |
[iOS, Swift] UILabel 여러 줄 표현하기 (0) | 2023.03.18 |
[iOS, Swift] UILabel 밑줄 추가하기 (0) | 2023.03.17 |