본문 바로가기
iOS

[iOS] 싱글톤 패턴

by seongminmon 2024. 7. 30.

싱글톤 패턴이란?

객체의 인스턴스가 오직 1개만 생성되는 패턴

 

클래스 정의

class NetworkManager {
    static let shared = NetworkManager()
    private init() {}
    
    func request() {
    	// ...
    }
}

 

공통으로 사용될 shared 인스턴스를 생성해준다.

private init으로 다른 곳에서 인스턴스를 생성할 수 없도록 만들어준다.

 

사용

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        NetworkManager.shared.request()
    }
}

 

타입 프로퍼티인 shared에 접근하여 프로퍼티나 메서드를 사용한다.

 

구조체를 쓰지 않는 이유

프로퍼티의 값을 변경할 때 문제가 생길 수 있음.

struct UserStruct {
    static var shared = UserStruct()
    private init() {}
    
    var value = 10
}

var user1 = UserStruct.shared
user1.value += 1

user1.value             // 11
UserStruct.shared.value // 10