본문 바로가기

Codes Travel/iOS Boost Course #2019

Singleton (싱글턴) 이란?

 

안녕하세요 :)

iOS 개발자 리치(rich_iosdev)입니다.


공유해드릴 내용은 Singleton 입니다.

 

Singleton (싱글톤)

*apple 공식 문서: returns the same instance no matter how many times an application requests it.

한번 인스턴스가 생성되고 동일한 인스턴스로만 접근해서 사용합니다.
즉, 어플리케이션의 요청 횟수와 상관 없이, 특정 클래스의 인스턴스가 1개라는 것이 보장되는 객체입니다.

애플 공식 문서 이미지 참조

일반적인 클래스의 경우 인스턴스를 생성할 때마다 새로운 인스턴스를 만들어서 사용이 가능하고, 싱글톤 클래스의 경우 글로벌 인스턴스를 한번만  생성해서 사용할 수 있습니다. 위 이미지에서 좌측 부분이 일반적인 클래스의 모습이고, 우측 부분이 싱글톤 클래스의 모습입니다.

 

Singleton 샘플 코드

 

간단하게 샘플 코드를 작성해봤습니다. 싱글톤 클래스의 이름은 Service 입니다.

선언

보통 shared 라는 프로퍼티 이름이 많이 사용되는 것 같습니다. 저 역시도 이렇게 사용하고 있구요. Cocoa framework 클래스들 중에서 싱글톤 클래스들의 경우, 예를들면 UIApplication.shared 이렇게 사용할 수 있습니다. 

사용

Service 싱글톤 클래스에서 shared 라는 프로퍼티를 통해서 singleTon() 함수를 접근 할 수 있습니다. 다른 함수나 프로퍼티를 선언해서 사용 가능합니다. 

 

Cocoa framework 싱글턴 디자인 패턴

 

  • FileManager
  • URLSession
  • NotificationCenter
  • UserDefaults
  • UIApplication

개인 프로젝트를 해보면서 싱글톤 클래스를 가장 많이 사용했었던 부분은 '서버와 통신하기 위한 네트워크' 였습니다. 인스턴스가 2개 이상 존재해야 할 필요가 없는 경우에 활용 가능한 패턴이며, 불필요하게 많은 싱글턴 디자인 패턴을 사용하는 것도 주의해야합니다.

 

잘못된 내용이 있다면 댓글을 달아주세요!

확인해서 수정하도록 하겠습니다 :)

 

끝까지 읽어주셔서 정말 감사합니다.  

 

References

 

[부스트코스] iOS 프로그래밍

Singleton?

https://www.edwith.org/boostcourse-ios/lecture/16855/

 

Apple 공식 문서

Singleton

https://developer.apple.com/library/archive/documentation/General/Conceptual/DevPedia-CocoaCore/Singleton.html