seong_hye, the developer

Swift) 문법 정리 - 싱글톤(Singleton) 패턴 본문

IOS

Swift) 문법 정리 - 싱글톤(Singleton) 패턴

seong_hye 2022. 7. 26.

싱글톤 패턴이란?

메모리상에 유일하게 1개만 존재하는 객체 설계하는 패턴

한번 생성된 이후에는 앱이 종료될 때까지, 유일한 객체로 메모리에 상주

static let 변수에 접근시 유일한 객체가 생성되고 데이터가 메모리에 lazy 하게 올라감

외부에서 또다른 새로운 객체 생성을 금지하고 싶은 경우, private init 메서드로 선언(선택적)

 

싱글톤 패턴이 필요한 이유?

앱 구현 시에 유일하게 한개만 필요한 객체가 필요한 경우

(특정한 유일한 데이터 / 관리 객체가 필요한 경우)

 

class UIbirthday {
    // 싱글톤 패턴
    static let singleton = UIbirthday()
    // 저장 속성 초기화
    var screenCount: Int = 1
    var screenBrightness: String = "70%"
    
    // 객체 생성 금지
    private init() {}
    
}

UIbirthday.singleton

var screen = UIbirthday.singleton
screen.screenBrightness // "70%"

screen.screenBrightness = "90%"

UIbirthday.singleton.screenBrightness // "90%"

 

사용하는 예시

ex) UserDefaults / UIApplicaiton / NotificationCenter ...

/*:
 ---
 * 실제 사용 예시
 ---
 */

let iosScreen = UIScreen.main    // 화면
let userDefaults = UserDefaults.standard    // 한번생성된 후, 계속 메모리에 남음!!!
let application = UIApplication.shared   // 앱
let fileManager = FileManager.default    // 파일
let notification = NotificationCenter.default   // 노티피케이션(특정 상황, 시점을 알려줌)

싱글톤 패턴의 장점과 단점은 뭐야?

 

장점

인스턴스가 1번만 생성되기 때문에 메모리 낭비 방지

전역 인스턴스로 사용할 수 있기 때문에 메모리 및 자원 관리가 쉬움

메모리를 할당하고 초기화하는 시간이 줄어들어 객체 접근 시간이 줄어듦

 

단점

생성자가 private 이기 때문에 Mock 객체를 만들어내기 어려워 테스트가 힘듦

어느곳에서나 쉽게 접근이 가능해 의존성이 생김

멀티 스레드 환경에서 객체가 2개 생성되는 위험 발생

 


 

 

참고자료

https://trumanfromkorea.tistory.com/36

 

[Swift] 싱글톤 패턴 (Singleton Pattern)

[Swift] 싱글톤 패턴 (Singleton Pattern) 싱글톤 패턴이란, 특정 용도로 객체를 하나만 생성하여 공용으로 사용하고 싶을 때 사용하는 디자인 패턴입니다. 클래스가 여러차례 호출되더라도, 인스턴스

trumanfromkorea.tistory.com


참고자료)

https://zrr.kr/qNHN

 

앨런 Swift문법 마스터 스쿨 (온라인 BootCamp - 2개월과정) 강의 - 인프런

Swift문법을 제대로 이해, 활용해보고자 하는 철학을 바탕으로 과정이 설계되었습니다. 코딩에 대해 1도 모르는 비전공자를 시작으로 네카라쿠배에 입사할 수 있는 초고급 수준까지 올리는 것을

www.inflearn.com

 

Comments