-
iOS/WebView/Project - 싱글톤 패턴 AppInfo 추가#9Project/Swift+WebView 2023. 1. 12. 09:21
IOS/Xcode 14X Swift5.7.2 WKWebView 에서 작업 진행
싱글톤(Singleton Pattern)이란?
디자인 패턴중에 하나이고 생성자가 여러번 호출되더라도 실제 생성되는 객체는 하나이고 객체를 다시 생성하더라도 이미 생성되어 있는 객체를 리턴한다.
DBCP(Database Connection Pool)와 같은 상황에서 많이 사용된다.
싱글톤 장점
- Instance를 최초 1회 생성하므로 메모리와 성능적인 측면에서 효율이 좋다.
- Singleton Instance는 전역 Instance로 다른 클래스들과 데이터 공유가 쉽다.
- Instance가 1개라는 것을 보증받는다. (Thread Safe)
싱글톤 단점
- Singleton Instance로 많은 데이터를 공유 시킬 경우 다른클래스의 결합도가 높아져 "개방=폐쇄"원칙(OCP, Open-Closed Principle)을 위배함 즉, 수정과 테스트가 어려워짐
진행 중인 프로젝트에서는 App 정보 및 WebView URL (LOCAL | DEV | QA | PROD)를 공유해서 사용해 보겠다.
싱글톤 클래스 생성 및 활용
AppInfo Class 생성
import Foundation class AppInfo { // 싱글톤 클래스 static let shared = AppInfo() // static을 이용해 Instance를 저장할 프로퍼티를 하나 생성 private init() {} var mainInfo: [String : Any]? { guard let info = Bundle.main.infoDictionary else { return nil } return info } var name: String? { self.mainInfo?["CFBundleName"] as? String } var scheme: String? { guard let urlTypes = self.mainInfo?["CFBundleURLTypes"] as? [AnyObject], let urlTypeDictionary = urlTypes.first as? [String: AnyObject], let urlSchemes = urlTypeDictionary["CFBundleURLSchemes"] as? [AnyObject], let scheme = urlSchemes.first as? String else { return nil } return scheme } var version: String? { self.mainInfo?["CFBundleShortVersionString"] as? String } var url: String = "https://naver.com" }
어느 클래스에서든 shared란 static 프로퍼티로 접근하면 하나의 Instance를 공유
싱글톤 클래스 접근
import Foundation import UIKit class InitViewController: BaseViewController { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. print("######### Init ViewController - viewDidLoad") let appInfo = AppInfo.shared print("appInfo.url : \(appInfo.url)") // 싱글톤 인스턴스 url에 값 변경 appInfo.url = "http://localhost" print("appInfo.url : \(appInfo.url)") // Optional Binding if let appName = appInfo.name, let appScheme = appInfo.scheme, let appVersion = appInfo.version { print("appName: \(appName)") print("appScheme: \(appScheme)") print("appVersion: \(appVersion)") } } }
참조
https://ukseung2.tistory.com/8
[Swift] 싱글톤 패턴(Singleton Pattern)
안녕하세요 욱승입니다. 이 포스팅에선 싱글톤 패턴에 대해 알아보고 Swift예시를 보며 이해하는 시간을 가지겠습니다! 1. 싱글톤 패턴(Singleton Pattern) 이란? 소프트웨어 디자인 패턴에서 싱글턴
ukseung2.tistory.com
https://dvlpr-chan.tistory.com/36
[Swift] 싱글톤 패턴(Singleton Pattern)
안녕하세요~ 차니에요! 오늘은 싱글톤 디자인 패턴에 대해 포스팅하겠습니다. 1. 싱글톤 패턴이란? 애플리케이션이 시작될 때 객체의 인스턴스를 최초 1회만 생성(static)하여 사용하는 디자인 패
dvlpr-chan.tistory.com
https://trumanfromkorea.tistory.com/36
[Swift] 싱글톤 패턴 (Singleton Pattern)
[Swift] 싱글톤 패턴 (Singleton Pattern) 싱글톤 패턴이란, 특정 용도로 객체를 하나만 생성하여 공용으로 사용하고 싶을 때 사용하는 디자인 패턴입니다. 클래스가 여러차례 호출되더라도, 인스턴스
trumanfromkorea.tistory.com
'Project > Swift+WebView' 카테고리의 다른 글
iOS/WebView/Project - 서버별 테스트 환경 만들기#11 (0) 2023.01.13 iOS/WebView/Project - Constants 및 Utils 분리#10 (0) 2023.01.13 iOS/WebView/Project - BaseViewController 모듈화#8 (0) 2023.01.11 iOS/WebView/Project - Splash 등록/설정#7 (0) 2023.01.11 iOS/WebView/Project - Assets 생성/등록#6 (0) 2023.01.10