ํน์ ์ฉ๋๋ก ๊ฐ์ฒด๋ฅผ ํ๋๋ง ์์ฑํ์ฌ ๊ณต์ฉ์ผ๋ก ์ฌ์ฉํ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ ๋์์ธ ํจํด์ ๋๋ค.
ํด๋์ค๊ฐ ์ฌ๋ฌ์ฐจ๋ก ํธ์ถ๋๋๋ผ๋, ์ธ์คํด์ค๋ ๋ฑ ํ๋ฒ๋ง ์์ฑ๋๊ฒ ํ๋ ๊ฒ์ ๋๋ค.
์ด๋ ๊ฒ ๋๋ฉด ์ ์ญ๋ณ์์ฒ๋ผ ์ฝ๋์ ์ด๋ ๊ณณ์์ ์ ๊ทผํ๋ ๊ฐ์ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผ์ด ๊ฐ๋ฅํด์ง๋๋ค.
์ค์ฅ๋์ฒ๋ผ ํ๋ฒ๊ฑฐ์ ๋ํ์ฌ ํ ๋ฒ ๋น์ ๋ฅผ ํด๋ณด๊ฒ ์ต๋๋ค.
๊ธฐ์กด์ ํ๋ฒ๊ฑฐ ๋ชจ๋ธ์ด
class BuggerInfo {
var bun: String?
var patty: String?
var vegatable: String?
}
๋ค์๊ณผ ๊ฐ์ด ์๊ณ , 3๋ช ์ ํ๋ฒ๊ฑฐ ์ ์์๊ฐ ํ๋ฒ๊ฑฐ๋ฅผ ์์ฑ ์ํค๋ ค๊ณ ํฉ๋๋ค.
let userInfo = BuggerInfo()
userInfo.bun = "๋ชจ์นด๋ฒ"
//bunVC
let userInfo = BuggerInfo()
userInfo.patty = "๋ถ๊ณ ๊ธฐ"
//pattyVC
let userInfo = BuggerInfo()
userInfo.vegatable = "ํผํด"
//vegetableVC
- ๊ฐ๊ฐ์ ๋ด๋น์๋ค์ด ์ธ์คํด์ค๋ฅผ ๊ฐ๊ฐ ์ ์ธํ๊ณ , ์ ๋ณด๋ฅผ ํ๋์ฉ ์ ์ฅํ๊ณ ์์ด์!
class BuggerInfo {
var bun = "๋ชจ์นด๋ฒ"
var patty = nil
var vegatable = nil
}
class BuggerInfo {
var bun = nil
var patty = "๋ถ๊ณ ๊ธฐ"
var vegatable = nil
}
class BuggerInfo {
var bun = nil
var patty = nil
var vegatable = "ํผํด"
}
- ๋ฌผ๋ก ๊ฐ๊ฐ์ ์ฌ๋ฃ๋ด๋น์๋ค์ด ์๋ก ์ฐธ์กฐํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ ์ ์์ง๋ง, ๋๋ฌด๋ ๋ถํธํฉ๋๋ค.. (BunVC โ PattyVC โ VegetableVC)
class BuggerManager {
static let shared = BugerInfo()
// 1๊ฐ๋ง ๋ง๋ค๊ฑฐ์ผ
var bun: String?
var patty: String?
var vegatable: String?
private init() {}
// ๋ ๋นผ๊ณ ๋ ๋ง๋ค์ง๋ง
}
- ์ด๋ ๊ฒ ์ค์์ ๋ฒ๊ฑฐ๋งค๋์ ๋ฅผ ๋๋๋ค๋ฉด, ๊ฐ๊ฐ์ ์ฌ๋ฃ ๋ด๋น์๋ ์๋ก ๋ค๋ฅธ ์ธ์คํด์ค๋ฅผ ์ ์ธํ ํ์์์ด ๋ฐ๋ก๋ฐ๋ก ์ ๋ณด๋ฅผ ํ๊ณณ์๋ค ๋ฐ๊ฟ์ค ์ ์์ด์!
- ์ธ์คํด์ค๊ฐ 1๋ฒ๋ง ์์ฑ๋๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น๋ฅผ ๋ฐฉ์งํ ์ ์๋ค
โ ๊ฐ๊ฐ ๋ด๋น์๊ฐ BuggerInfo๋ฅผ ์์ฑํ๋ ๊ฒ ๋ณด๋ค, BuggerManager๊ฐ 1๋ฒ๋ง ์์ฑํด์ Good!
- ์ ์ญ ์ธ์คํด์ค๋ก ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ ๋ฐ ์์ ๊ด๋ฆฌ๊ฐ ์ฝ๋ค
โ BuggerManager๋ง ๊ด๋ฆฌํด์ฃผ๋ฉด ๋๋ต๋๋ค!
- ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ๊ณ ์ด๊ธฐํํ๋ ์๊ฐ์ด ์ค์ด๋ค์ด ๊ฐ์ฒด ์ ๊ทผ ์๊ฐ์ด ์ค์ด๋ ๋ค
โ ๊ฐ๊ฐ ์ฌ๋ฃ ๋ด๋น์๋ค์ด ์ ๋ณด๋ฅผ ๋ง๋ค์ด ์ฃผ๋ ๊ฒ ๋ณด๋ค, ๋ฐ๋ก ๋ฒ๊ฑฐ๋งค๋์ ๊ฐ ์ด๋ฏธ ํ๋ฒ ๋ง๋ ๋ฉ๋ชจ๋ฆฌ์ ๋ค์ ์ ๊ทผํ๋ฉด ๋น ๋ฆ ๋๋ค!
- Singleton Instance๊ฐ ๋๋ฌด ๋ง์ ์ผ์ ํ๊ฑฐ๋, ๋ง์ ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ์ํฌ ๊ฒฝ์ฐ ๋ค๋ฅธ ํด๋์ค์ Instance๋ค ๊ฐ ๊ฒฐํฉ๋๊ฐ ๋์์ ธ "๊ฐ๋ฐฉ=ํ์" ์์น์ ์๋ฐฐํจ
**โ ์ฑ๊ธํด ์ธ์คํด์ค๊ฐ ๋๋ฌด ๋ง์ ์ผ์ ํ๋ฉฐ ์ฌ๋ฌ ๋ถ๋ถ๊ณผ ๋ฌถ์ฌ ์๋ค๋ฉด?, ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ๊ฑฐ๋ ๊ธฐ์กด ๊ธฐ๋ฅ์ ์์ ํ ๋ ๋ค๋ฅธ ๋ถ๋ถ์๋ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค.ย
โ ์๋๋ค ๋กฏ๋ฐ๋ฆฌ์, ๋งฅ๋๋ ๋, ๋ฒ๊ฑฐํน์ด ๋ค ์ด ๋งค๋์ ๋ฅผ ์ด๋ค๋ฉด?
โ ๋งฅ๋๋ ๋๊ฐ ํจํฐ ์๋ชป ๊ตฌ์ฐ๋ฉด ์คํ์ ์ด๋ค.**
- ๋ฉํฐ ์ค๋ ๋ ํ๊ฒฝ์์ ๊ฐ์ฒด๊ฐ 2๊ฐ ์์ฑ๋๋ ์ํ์ด ๋ฐ์ํ ์ ์๋ค
โ ์์ ๋จ์ ์์ ์ธ๊ธํ๊ฒ๊ณผ ๊ฐ์ด, ์ฑ๊ธํค ๊ฐ์ฒด๋ ๋ฑ ํ๋ฒ๋ง ์์ฑ๋์ด์ผ ํ๋๋ฐ ๋ฉํฐ์ค๋ ๋ ํ๊ฒฝ์์ ํด๋์ค์ ๋์์ ์ ๊ทผํ ์ ๊ฐ์ฒด๊ฐ 2๊ฐ ์์ฑ๋๋ ์ํ์ด ๋ฐ์ํ ์ ์์ต๋๋ค. ์ด๋ Thread-Safe ๋ฅผ ๋ณด์ฅํ์ง ์์ต๋๋ค.
โ ํ์ง๋ง Swift์์๋
static let shared = BugerInfo()
static let
์ ํตํ์ฌ 1ํ ์์ฑ์ ๋ณด์ฅ ๋ฐ์ ์ ์๋ค!
UIScreen.main
URLSession.shared
NotificationCenter.default
UserDefaults.standard
- ์ฌ์ฉ ์ด์
- ์ ํ๋ฆฌ์ผ์ด์
์ ๋ฐํ์ ๋์์๋ ๋จ ํ๋์ ์ฃผ ํ๋ฉด์ด ์กด์ฌํ๋ฏ๋ก, **
UIScreen.main
**์ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ ์ญ์ ์ผ๋ก ๊ณต์ ๋๋ ๋จ์ผ ์ธ์คํด์ค์ ๋๋ค. - ์ฌ๋ฌ ๊ณณ์์ ๋์ผํ ๋คํธ์ํฌ ๊ตฌ์ฑ์ ์ฌ์ฉํด์ผ ํ๋ฏ๋ก, ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฒด์์ ๋จ์ผ ์ธ์คํด์ค๋ฅผ ๊ณต์ ํ๋ ๊ฒ์ด ํจ์จ์ ์ ๋๋ค.
- ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ด๋ฒคํธ๋ฅผ ํต์ ํ๋ ๋ฐ ์ฌ์ฉ๋๋ฉฐ, ๋จ์ผ ์ธ์คํด์ค๋ฅผ ํตํด ๋ชจ๋ ์ด๋ฒคํธ๋ฅผ ์ค์ ์ง์ค์์ผ๋ก ๊ด๋ฆฌํ๋ ๊ฒ์ด ํจ์จ์ ์ ๋๋ค.
- ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค์ ์ด๋ ์ฌ์ฉ์ ๊ธฐ๋ณธ ์ค์ ๊ณผ ๊ฐ์ ๊ฐ๋จํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๊ฒ์ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ฌ์ฉ์์ ์ค์ ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฒด์์ ๊ณต์ ํ๊ธฐ ๋๋ฌธ์ ๋จ์ผ ์ธ์คํด์ค๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ ์ฉํฉ๋๋ค.
- ์ ํ๋ฆฌ์ผ์ด์
์ ๋ฐํ์ ๋์์๋ ๋จ ํ๋์ ์ฃผ ํ๋ฉด์ด ์กด์ฌํ๋ฏ๋ก, **
class SignUpManager {
static let shared = SignUpManager()
var averageUseTime: String = "1"
var problem: [String] = ["12"]
var period: Int = 3
var goalTime: Int = 3
var appCode: [Apps] = [Apps(appCode: "#25393", goalTime: 76000),
Apps(appCode: "#25391", goalTime: 89000)]
}
- ์จ๋ณด๋ฉ ๊ณผ์ ์์ ์ฌ๋ฌ VC๋ก ๋ถํฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ํด์ SignUpManager๋ผ๋ ์ฑ๊ธํค ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ์์ต๋๋ค.
func didTapButton() {
let nextViewController = ProblemSurveyViewController()
self.navigationController?.pushViewController(nextViewController, animated: false)
**SignUpManager.shared.averageUseTime = selectedText**
}
- ๋ค์๊ณผ ๊ฐ์ด ์ ๊ทผํ์ฌ ์ฌ์ฉํ ์ ์์์ด์!
- ์ฅ๋จ์ ์ ๋ํด ์ฒ์์ผ๋ก ์๊ฐํด๋ณผ ์ ์์๋ค! ์ ์ฐ๋์ง ์์์ ์ข์๋ค.