✅ private init()의 역할
private initializer는 코드의 다른 부분에서 Settings 클래스 인스턴스를 생성하려고 시도하는 것을 막아줌
class MySingleton {
static let shared = MySingleton()
private init() {} // 👈👈
}
class UserDefaultsManager {
static let shared = UserDefaultsManager()
private init() {} // 외부 생성 차단
}
// 다른 곳에서:
let manager = UserDefaultsManager() // ❌ 컴파일 에러!
// 'UserDefaultsManager' initializer is inaccessible due to 'private' protection level
let shared = UserDefaultsManager.shared // ✅ 유일한 방법
✅ 없을 경우
class UserDefaultsManager {
static let shared = UserDefaultsManager()
// init() ← 기본적으로 public
}
// 다른 곳에서 이런 일이 가능해짐:
let manager1 = UserDefaultsManager() // 🚨 새 인스턴스!
let manager2 = UserDefaultsManager() // 🚨 또 다른 인스턴스!
let shared = UserDefaultsManager.shared // 기존 shared 인스턴스
// → 총 3개의 서로 다른 인스턴스 존재!
'Swift' 카테고리의 다른 글
[Swift] Result 타입 (1) | 2025.06.17 |
---|---|
[Swift] Any와 AnyObject (0) | 2025.06.12 |
[Swift] 캡처리스트와 순환참조 (1) | 2025.06.05 |
[Swift] 고차함수 더 이상 헷갈리지 않기 (0) | 2025.06.04 |
[WWDC] ARC in Swift (0) | 2025.05.30 |