싱글톤(SINGLETON) 패턴 구현 (무엇인지, 왜 사용하는지, 어떻게 사용하는지)
싱글톤(SINGLETON) 패턴이란 무엇인가?
싱글톤 패턴은 하나의 어플리케이션 내에서 하나의 인스턴스(객체)만 사용해야하는 상황에 주로 사용됩니다.
(어플리케이션 전체 영역에서 하나의 클래스의 단 하나의 인스턴스를 생성하여 사용하는 것을 의미합니다.)
환경설정 관리 클래스나, 커넥션 풀과 같이 Pool 형태로 관리되는 클래스 등의 공통 클래스에 사용되는 것이 일반적입니다.
구현 및 사용이 간단한 만큼 남용하기 쉬운데 한 번 생성된 이후에는 어플리케이션 종료시까지 항상 메모리에 상주하게 되므로 필요한 경우에만 적절히 활용해야 메모리가 낭비되는 것을 막을 수 있습니다.
iOS에서는 대표적으로 UIApplication, AppDelegate 등이 싱글톤 패턴입니다.
싱글톤(SINGLETON) 패턴을 왜 사용하는 것인가?
예를 들어 사용자 정보를 처음에만 로딩해주는 UserManager 클래스가 있다고 하면, 매번 이 인스턴스를 생성하는 것은 자원 낭비 또는 잘못하다간 인스턴스가 꼬이는 일이 발생될 수 도 있습니다.
그러나 UserManager 클래스를 싱글톤 패턴으로 구현한다면 어플리케이션 어느 영역에서든 UserManager클래스를 사용할 수 있습니다. 그래서 싱글톤 패턴으로 구현하는 것이 좋습니다.
싱글톤(SINGLETON) 패턴을 어떻게 사용하는지 (Swift)
class UserManager {
static let sharedInstance = UserManager()
var x: Int = 0
private init() { }
}
외부에서는 클래스에 대한 인스턴스를 직접 생성하지 못하도록 생성자는 private 으로 선언해줍니다.
Swift에서 let으로 선언한 것은 기본적으로 thread-safe 하므로 별도로 dispatch_once_t 같은 처리를 해주지 않아도 되며, static 전역 변수로 선언한 것은 lazy 하게 동작하므로 가장 처음 Singleton을 생성하기 전에는 메모리에 올라가지 않습니다.
class UserManager {
static let sharedInstance : UserManager = {
let instance = UserManager()
...
return instance
} ()
private init() { }
}
초기 설정에 필요한 내용들이 있다면 이와 같이 구현해 줄수도 있습니다.
let instance: UserManager = UserManager.sharedInstance
print(instance.x)
let instance1 = UserManager() // 생성자를 private으로 선언했으므로 에러 발생.
싱글톤 클래스에 접근할 때는 다음과 같이 클래스. 싱글톤 변수로써 접근합니다.
'Backup > iOS' 카테고리의 다른 글
iOS Push APNS 인증서 만드는 방법 (0) | 2018.04.11 |
---|---|
iOS Push 수신할 때 앱의 3가지 상태 확인 (0) | 2018.04.10 |
cocoapods(코코아포드) 설치 및 사용 방법 (0) | 2018.01.16 |
(출처) 아이폰 앱 개발자가 알아야 할 14가지 (번역) (0) | 2018.01.15 |
(출처) 모바일 UI UX 기본가이드 모바일 UI 디자인 기본 요소 - 색채 Color (0) | 2017.12.28 |
댓글
이 글 공유하기
다른 글
-
iOS Push APNS 인증서 만드는 방법
iOS Push APNS 인증서 만드는 방법
2018.04.11 -
iOS Push 수신할 때 앱의 3가지 상태 확인
iOS Push 수신할 때 앱의 3가지 상태 확인
2018.04.10 -
cocoapods(코코아포드) 설치 및 사용 방법
cocoapods(코코아포드) 설치 및 사용 방법
2018.01.16 -
(출처) 아이폰 앱 개발자가 알아야 할 14가지 (번역)
(출처) 아이폰 앱 개발자가 알아야 할 14가지 (번역)
2018.01.15