iOS-SOPT-iNNovation / iOS_Traning

15 stars 0 forks source link

<6주차> Singleton 패턴을 활용하는 경우를 예를 들어 설명하시오. #31

Closed namsoo5 closed 3 years ago

namsoo5 commented 3 years ago

Singleton패턴

하나의 인스턴스만을 생성해서 전역적으로 사용하기위한 패턴

앱내 다양한 곳에서 정보를 접근할때 간편하게 사용 앱실행중 사용자의 정보를 싱글턴으로 만들어서 접근가능

iJoom commented 3 years ago

객체를 단 한번만 생성가능하게해서, 프로젝트에서 전역적으로 사용가능하게함

앱의 뎁스가 깊은 곳에서 데이터 전달을 끌고 가야되는 경우 (A->B->C->D) 싱글턴패턴을 사용해 하나의 전역 데이터에 각각 데이터를 저장하게하고, 마지막 뷰에서 서버통신을 하는 방식으로 사용

khyunjiee commented 3 years ago

Singleton Pattern

특정한 용도로 객체를 하나 생성해서 공용으로 사용하게 한다. 여러 객체에서 접근이 가능하며 임의로 메모리에서 해제해주지 않는 이상 프로그램이 끝날 때까지 메모리에 유지됨

5anniversary commented 3 years ago

싱글톤 패턴

객체를 하나만 생성하게 되면, 생성한 객체를 어디에서든 참조해 사용가능하도록 만든 패턴!!

Thread-safe하게 만들어 멀티스레드에서 사용하더라도 문제가 없어야함!!

choidam commented 3 years ago

Singleton Pattern

특정 객체가 앱에서 유일하게 하나만 존재하여 다른 객체들이 그 안의 내용을 공유하는 방식입니다. scope 에 제약받지 않고 어디서든지 접근이 가능합니다.

고정된 메모리 영역을 얻으면서 한 번의 인스턴스만 사용하기 때문에 메모리 낭비를 방지할 수 있습니다. 그러나 이 싱글톤 인스턴스가 다양한 곳에서 참조되어 데이터를 공유할 경우, 다른 클래스의 인스턴스들 간 결합도가 높아져서 설계에 위험이 따릅니다.

elesahich commented 3 years ago
  1. 싱글턴은 런타임에 메모리에 할당되고 앱이 종료될때까지 사라지지 않습니다. 따라서 필요한 곳에 알맞게 쓰는것이 중요합니다
  2. 저는 싱글턴이 좋은가, 아닌가를 이번에 AlertView를 싱글턴으로 만들어보며 나름의 기준을 세우게 되었습니다 Custom PopupView는 어느 뷰의 어느 버튼액션에도 넣을 수 있어야 하는 점에서, 하나의 객체를 여러 곳에서 돌려쓰는게 맞다고 생각했습니다. 만약 한 뷰에서만 사용되는 객체를 싱글턴으로 사용한다면? 이라는 반대 예제와 비교하면 잘 와닿게 됩니다

비슷한 시스템 프레임워크나 프로퍼티로는 UserDefault, NotificationCenter등이 있겠습니다.

dongminyoon commented 3 years ago

앱이 생성 될 때부터 종료될 때까지 객체의 한 인스턴스만을 사용해서 이용해야하는 경우 사용한다. 그렇기 때문에, 너무 과하게 사용할 경우 오히려 좋지않을 수도 있다.

사용 예시 보통 전역전으로 무언가를 관리해야할 때 사용했는데, iOS 프레임워크 단에서 봤을 때는 UserDefaults, FileManager, UIApplication의 객체들이 있다. 개인적으로 선언할 때는 CoreData를 사용해야할 경우 이를 관리하는 객체나 네트워크를 관리하는 객체를 만들 때 사용했다.