ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

 

์‹ฑ๊ธ€ํ†คํŒจํ„ด์ด๋ž€.

ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค(๊ฐ์ฒด)๋ฅผ ํ•˜๋‚˜๋งŒ ๋งŒ๋“ค์–ด์„œ ์“ฐ๋Š” ํŒจํ„ด

 

 

Singleton pattern์— ๋Œ€ํ•ด

 

์ƒ์„ฑ๋ฐฉ๋ฒ•, ์ •์˜, ์“ฐ์ž„ ์ˆœ์œผ๋กœ ์ •๋ฆฌํ•ด๋‚˜๊ฐ€๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

 

1. ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด ์ƒ์„ฑ ๋ฐฉ๋ฒ•.

 

 

 

 

 

 

 

์šฐ์„  class๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๋‚ด๋ถ€์—๋Š”, class์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” class ์ž์ฒด ์ƒ์ˆ˜๋ฅผ static ์œผ๋กœ ์„ ์–ธ ํ•ด์ค๋‹ˆ๋‹ค.

static์„ ๋ถ™์ด๋ฉด 'shared' ๋Š” ์ƒ์†์ด ์•ˆ๋˜๋ฉฐ ์ธ์Šคํ„ด์Šคํ™” ํ•˜์—ฌ ์—ฌ๋Ÿฌ๊ฐœ ์ƒ์„ฑ ๋˜์ง€ ์•Š๋„๋ก ํ•ด์ค๋‹ˆ๋‹ค.

 

( static ์„ ์ž˜ ๋ชจ๋ฅด์‹ ๋‹ค๋ฉด https://ggasoon2.tistory.com/2#typeProperty ์ด ๊ธ€์˜ 'ํƒ€์ž… ํ”„๋กœํผํ‹ฐ'๋ฅผ ์ฐธ๊ณ  ํ•ด์ฃผ์„ธ์š”.^^ )

 

๊ทธ๋ฆฌ๊ณ  private init() 

์ƒ์„ฑ์ž๋ฅผ private์œผ๋กœ ์ œํ•œํ•˜์—ฌ ์™ธ๋ถ€์—์„œ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜์ง€ ๋ชปํ•˜๋„๋ก ํ•˜์—ฌ,

'Singleton.shared' ๋ผ๋Š” ๊ฐ์ฒด๊ฐ€ ์œ ์ผ ํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

 

'Singleton'์€ ํด๋ž˜์Šค์ธ๋ฐ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ ํ•˜์ง€ ๋ชปํ•˜๋‹ˆ class ์ž์ฒด ์ƒ์ˆ˜์ธ shared๋กœ ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์œ ์ผํ•ฉ๋‹ˆ๋‹ค.

๊ณ ๋กœ ์ธ์Šคํ„ด์Šค ํ”„๋กœํผํ‹ฐ x์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Singleton.shared.x ๋กœ ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ• ๋ฟ!!

 

 

playground ์—์„œ..

 

์ด๋ ‡๊ฒŒ a๋กœ ๋”ฐ๋กœ ์ƒ์„ฑ์ด ์•ˆ๋˜๋ฉฐ,

x๋ผ๋Š” ๊ฐ’์„ ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ•์€ Hello.shared.x ๋ฟ์ธ ๋ชจ์Šต! ( ์ด๊ฒŒ ์‹ฑ๊ธ€ํ†ค )

 

 

2. ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์ด ๋ญ”๋ฐ?

 

 

์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์€ OOP์˜ ๋””์ž์ธ ํŒจํ„ด์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค!

 

ํ•˜๋‚˜์˜ ๊ฐ์ฒด๋งŒ์„ ์ƒ์„ฑํ•˜๋ฉฐ,

๊ทธ ํ•˜๋‚˜์˜ ๊ฐ์ฒด๋กœ ์–ด๋””์—์„œ๋“ ์ง€(์—ฌ๋Ÿฌ viewController์—์„œ) ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” !!

 

๋˜, ๊ทธ ๊ฐ์ฒด๋Š” ์ƒ์„ฑ๊ณผ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์บก์Šํ™” ๋˜์–ด์žˆ์–ด

์–ดํ”Œ์˜ ํ”„๋กœ์„ธ์Šค ์ง„ํ–‰์— ์žˆ์–ด์„œ ์˜ํ–ฅ์„ ์ ๊ฒŒ ๋ฐ›๋Š”๋‹ค๋Š” ํŠน์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

 

3. ๊ทธ๋ž˜์„œ ์‹ฑ๊ธ€ํ†ค ์™œ ์“ฐ๋Š”๋ฐ

 

 

ํ•˜๋‚˜์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ๋“ฑ๋กํ•ด์„œ ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ํ•ด๋‹น ์ธ์Šคํ„ด์Šค๋ฅผ ๊ณต์œ ํ•˜์—ฌ ์‚ฌ์šฉํ•˜๊ฒŒ๋” ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ์š”์ฒญ์ด ๋งŽ์€ ๊ณณ์—์„œ ์‚ฌ์šฉํ•˜๋ฉด ํšจ์œจ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ๊ฐ™์€ ์„ค์ • ํŒŒ์ผ์˜ ๊ฒฝ์šฐ ๊ฐ์ฒด๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ ์ƒ์„ฑ๋˜๋ฉด ์„ค์ • ๊ฐ’์ด ๋ณ€๊ฒฝ๋  ์œ„ํ—˜์ด ์ƒ๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

 

 

 

4. ์‹ฑ๊ธ€ํ†ค ์“ฐ์ด๋Š” ๊ณณ

 

// Shared URL Session
let sharedURLSession = URLSession.shared

// Default File Manager
let defaultFileManager = FileManager.default

// Standard User Defaults
let standardUserDefaults = UserDefaults.standard

// Default Payment Queue
let defaultPaymentQueue = SKPaymentQueue.default()

 

๋งŽ์ด ๋ด์˜จ http ํ†ต์‹ ํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ์ฝ”๋“œ URLSession.shared 

 

let task = URLSession.shared.dataTask(with:request) { (data, response, error) in 
	// something code
} 
task.resume()

 

Local ์œ„์น˜์˜ file์„ ๋‹ค๋ฃจ๋Š” FileManger.default 

 

๋˜ ์‚ฌ์šฉ์ž์˜ ๊ธฐ๋ณธ ๊ฐ’๊ณผ ๋‹จ์ผ๊ฐ’์„ ์ €์žฅํ•˜์—ฌ ์—ฌ๋ŸฌVC์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” UserDefaults.standard

 

UserDefaults์— ๋Œ€ํ•œ ์˜ˆ์‹œ๋ฅผ ๋ณด๊ณ ์‹ถ์œผ์‹œ๋‹ค๋ฉด https://zeddios.tistory.com/107

iOS ๊ถŒ์œ„์ž ์ œ๋””์˜ค์Šค๋‹˜์˜ UserDefaults ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค. ^^

 

 

 

์š”์ข…๋„๊ฐ€ ์žˆ๋„ค์š”.

 

 

 

 

+ ์ œ์ผ ๊ถ๊ธˆํ–ˆ๋˜ ์ .

 

Q. ์ „์—ญ ๋ณ€์ˆ˜๋ž‘ ๋˜‘๊ฐ™์€๋ฐ ์™œ ๊ตณ์ด ์‹ฑ๊ธ€ํ†ค์œผ๋กœ ์“ธ๊นŒ..?

 

A. ๋งŽ์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์žก์•„๋จน๋Š” ํด๋ž˜์Šค๊ฐ€ ์žˆ๋‹ค ํ–ˆ์„ ๋•Œ ์ „์—ญ ๋ณ€์ˆ˜๋กœ ์„ ์–ธํ•˜๋ฉด

์‚ฌ์šฉํ•˜์ง€ ์•Š์„๋•Œ์—๋„ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์žก์•„๋จน๋Š”๋‹ค.

 

BUT. ์‹ฑ๊ธ€ํ†ค?  ์ƒ์„ฑ ์‹œ์ ๋ถ€ํ„ฐ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉ. ๋˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„๋•Œ ํ•ด์ œํ•จ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์•„๋‚„ ์ˆ˜ ์žˆ๋‹ค~

 

 

 

 

๋ถ€์กฑํ•จ์ด ๋งŽ์€ ๊ธ€

์ฝ์–ด์ฃผ์…”์„œ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค!

 

 

( ์ฐธ์กฐ : https://cocoacasts.com/what-is-a-singleton-and-how-to-create-one-in-swift )

๋Œ“๊ธ€