일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 글또
- unrecognized selector sent to class
- K디지털기초역량훈련
- 주간 달력
- ios 개발 강의
- 글또9기
- uikit
- Git
- On branch is up to date with ' '
- IOS
- class
- avaliable
- 바이트디그리
- SWIFT
- 제어전송문
- MyLife
- 코드스니펫
- 생명주기
- 파스칼표기법
- 내_삶
- error해결
- Switch
- weekly calendar
- 연관값
- 회고
- AnyObject
- 다짐글
- actionSheet
- struct
- copy-on-write
- Today
- Total
seong_hye, the developer
Swift) 문법 정리 - 싱글톤(Singleton) 패턴 본문
싱글톤 패턴이란?
메모리상에 유일하게 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
참고자료)
앨런 Swift문법 마스터 스쿨 (온라인 BootCamp - 2개월과정) 강의 - 인프런
Swift문법을 제대로 이해, 활용해보고자 하는 철학을 바탕으로 과정이 설계되었습니다. 코딩에 대해 1도 모르는 비전공자를 시작으로 네카라쿠배에 입사할 수 있는 초고급 수준까지 올리는 것을
www.inflearn.com
'IOS' 카테고리의 다른 글
Swift) 문법 정리 - COW(Copy-On-Write) (0) | 2022.08.02 |
---|---|
Error) (0) | 2022.07.26 |
Swift) 문법 정리 - self vs Self (0) | 2022.07.19 |
Swift) 화면전환 방식 (0) | 2022.07.19 |
[ios 개발 강의] @escaping (0) | 2022.07.19 |