DEV_Larva

์•ก์„ธ์Šค ์ œ์–ด & ๋ฉ”์„œ๋“œ ๋ณธ๋ฌธ

iOS/Swift ๋ฌธ๋ฒ•

์•ก์„ธ์Šค ์ œ์–ด & ๋ฉ”์„œ๋“œ

NelchuPapa 2022. 8. 16. 00:35
๋ฐ˜์‘ํ˜•

๐Ÿง‘‍๐Ÿ’ป์ด๋ฒˆ Swift ์‹œ๊ฐ„์— ๋ฐฐ์›Œ๋ณผ ๊ฒƒ์€  ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป

 

  • ์•ก์„ธ์Šค ์ œ์–ด
  • ์ •์  ์†์„ฑ ๋ฐ ๋ฉ”์„œ๋“œ

 

 

1. ์•ก์„ธ์Šค ์ œ์–ด

 

Swift์˜ ๊ตฌ์กฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๋‹ค ๋ณด๋ฉด ์†์„ฑ๊ณผ ๋ฉ”์„œ๋“œ์— ์•ก์„ธ์Šค ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์›ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ๊ฒƒ์— ์•ก์„ธ์Šค ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค. ์™ธ๋ถ€ ์•ก์„ธ์Šค๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆจ๊ธฐ๊ณ  ์‹ถ์„ ๋•Œ๋„ ์žˆ๋‹ค. 

 

์˜ˆ์‹œ ๊ตฌ์กฐ์ฒด๋ฅผ ํ†ตํ•ด์„œ ๋ฌธ์ œ๋ฅผ ๋งŒ๋“ค๊ณ  ํ•ด๊ฒฐ๋ฒ•์„ ์ฐพ์•„๋ณด์ž!

struct BankAccount {
    var funds = 0

    mutating func deposit(amount: Int) {
        funds += amount
    }

    mutating func withdraw(amount: Int) -> Bool {
        if funds >= amount {
            funds -= amount
            return true
        } else {
            return false
        }
    }
}

์€ํ–‰ ๊ณ„์ขŒ์—์„œ ๋ˆ์„ ์ž…๊ธˆํ•˜๊ณ  ์ธ์ถœํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๊ณ  ์œ„์˜ ์˜ˆ์‹œ์˜ ์ฝ”๋“œ์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. 

 

 

 

var account = BankAccount()
account.deposit(amount: 100)
let success = account.withdraw(amount: 200)

if success {
    print("Withdrew money successfully")
} else {
    print("Failed to get the money")
}

ํ•˜์ง€๋งŒ funds ์†์„ฑ์€ ์šฐ๋ฆฌ์—๊ฒŒ ์™ธ๋ถ€์ ์œผ๋กœ๋งŒ ๋…ธ์ถœ๋˜์—ˆ์„ ๋ฟ์ธ๋ฐ ์šฐ๋ฆฌ๊ฐ€ ๊ทธ๊ฒƒ์„ ์ง์ ‘ ๋งŒ์ง€์ง€ ๋ชปํ•˜๊ฒŒ ๋ง‰์€ ๊ฒƒ์ด ์žˆ๋‚˜?? ์—†๋‹ค.

๋”ฐ๋ผ์„œ ์•„๋ž˜์™€ ๊ฐ™์€ ์ฝ”๋“œ๊ฐ€ ํ—ˆ์šฉ๋œ๋‹ค. 

 

 

account.funds -= 1000

์ด๊ฒŒ ์˜๋ฏธํ•˜๋Š” ๊ฒŒ ๋ฌด์—‡์ธ๊ฐ€?? ์‚ฌ๋žŒ๋“ค์ด ๊ฐ€์ง„ ๋ˆ๋ณด๋‹ค ๋” ๋งŽ์€ ๋ˆ์„ ์ธ์ถœํ•˜๋Š” ๊ฑธ ๋ง‰๊ธฐ ์œ„ํ•ด ์šฐ๋ฆฌ์˜ ๋…ผ๋ฆฌ๋ฅผ ์™„์ „ํžˆ ํ”ผํ•ด์„œ ํ”„๋กœ๊ทธ๋žจ ์ž์ฒด๊ฐ€ ์ด์ƒํ•œ ๋ฐฉํ–ฅ์œผ๋กœ ํ˜๋Ÿฌ๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.  

 

 

 

์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ ์šฐ๋ฆฌ๋Š” Swift์—๊ฒŒ funds ๋‚ด๋ถ€์—์„œ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๊ฒŒ๋” ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค. ๊ทธ ๋ฐฉ๋ฒ•์€ ๋”ฑ ํ•œ ๊ฐœ์˜ ๋‹จ์–ด๋งŒ ์ถ”๊ฐ€ํ•˜๋ฉด ๋œ๋‹ค. 

private var funds = 0

 

 

์ด์ œ ๊ตฌ์กฐ ์™ธ๋ถ€์—์„œ ์ž๊ธˆ์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•˜์ง€๋งŒ deposit()๊ณผ withdraw()์—์„œ๋Š”(์˜ˆ๊ธˆ๊ณผ ์ธ์ถœ) ๊ฐ€๋Šฅํ•ด์ง„๋‹ค. ๊ตฌ์กฐ ์™ธ๋ถ€์—์„œ ์ž๊ธˆ์„ ์ฝ๊ฑฐ๋‚˜ ์“ฐ๋ ค๊ณ  ํ•˜๋ฉด Swift๊ฐ€ ๊ทธ์— ๋Œ€ํ•œ ์ฝ”๋“œ ์ž‘์„ฑ์„ ๊ฑฐ๋ถ€ํ•˜๊ณ  ์˜ค๋ฅ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. 

 

 

 

 

์šฐ๋ฆฐ ์š”๊ฑธ ๊ตฌ์กฐ์ฒด์˜ ์†์„ฑ๊ณผ ๋ฉ”์„œ๋“œ๊ฐ€ ๊ตฌ์กฐ์ฒด ์™ธ๋ถ€์—์„œ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ œ์–ดํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ ‘๊ทผ ์ œ์–ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. 

๊ทธ์ค‘ ์œ ์šฉํ•œ ์˜ต์…˜์ด ์žˆ๋Š”๋ฐ ๊ทธ์ค‘ 3๊ฐ€์ง€๋งŒ ์•Œ์•„๋ณด์ž!

 

  • private : ๊ตฌ์กฐ๋ฌผ ์™ธ๋ถ€์˜ ์–ด๋–ค ๊ฒƒ๋„ ์ด๊ฒƒ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค!!๐Ÿ™…‍โ™€๏ธ
  • fileprivate : ํ˜„์žฌ ํŒŒ์ผ ์™ธ๋ถ€์˜ ์–ด๋–ค ๊ฒƒ๋„ ์ด ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋„๋ก ์„ค์ •
  • public : ๋ˆ„๊ตฌ๋‚˜ ์–ด๋””์„œ๋‚˜ ๋ง˜๋Œ€๋กœ ์‚ฌ์šฉํ•˜์„ธ์š”~๐Ÿค—

 

 

 


 

2. ์ •์  ์†์„ฑ ๋ฐ ๋ฉ”์„œ๋“œ 

 

๊ฐ€๋”์”ฉ ์ง์ ‘ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ์˜ ํŠน์ • ์ธ์Šคํ„ด์Šค๊ฐ€ ์•„๋‹ˆ๋ผ ๊ตฌ์กฐ ์ž์ฒด์— ์†์„ฑ์ด๋‚˜ ๋ฉ”์„œ๋“œ๋ฅผ  ์ถ”๊ฐ€ ํ• ๋ ค๋Š” ํ• ๋•Œ๊ฐ€ ์žˆ๋‹ค. 

 

๋ฐ”๋กœ ์ •์  ์†์„ฑ๊ณผ ๋ฉ”์†Œ๋“œ๋ฅผ ๋งŒ๋“ค๊ณ  ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์˜ˆ์‹œ๋ฅผ ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ํ™•์ธํ•ด๋ณด์ž

 

struct School {
    static var studentCount = 0

    static func add(student: String) {
        print("\(student) joined the school.")
        studentCount += 1
    }
}

 

์—ฌ๊ธฐ์„œ static์ด๋ผ๋Š” ํ‚ค์›Œ๋“œ๋Š” studentCount() ์†์„ฑ๊ณผ add() ๋ฉ”์„œ๋“œ๊ฐ€ ๋ชจ๋‘ ๊ตฌ์กฐ์˜ ๊ฐœ๋ณ„ ์ธ์Šคํ„ด์Šค๊ฐ€ ์•„๋‹Œ school ๊ตฌ์กฐ ์ž์ฒด์— ์†ํ•จ์„ ์˜๋ฏธํ•˜๊ณ  ์žˆ๋‹ค.

 

 

๊ทธ๋ž˜์„œ ํ•ด๋‹น ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์ž‘์„ฑํ•˜๋ฉด ๋œ๋‹ค. 

School.add(student: "Taylor Swift")
print(School.studentCount)

 

์ •์  ์†์„ฑ๊ณผ ๋น„์ •์  ์†์„ฑ ๋ฐ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ผํ•ฉํ•˜๊ณ  ์ผ์น˜์‹œํ‚ค๋ ค๋ฉด ๋‘ ๊ฐ€์ง€ ๊ทœ์น™ ํ•„์š”ํ•˜๋‹ค.

  1. ์ •์  ์†์„ฑ ๋ฐ ๋ฉ”์„œ๋“œ๋Š” ๋น„์ •์  ์†์„ฑ ๋ฐ ๋ฉ”์„œ๋“œ๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์—†๋‹ค. (์˜๋ฏธ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ)
  2. ๋น„์ •์  ์ฝ”๋“œ์—์„œ ์ •์  ์ฝ”๋“œ์— ์•ก์„ธ์Šค ํ•˜๋ ค๋ฉด ํ•ญ์ƒ Shool.studentCount ์™€ ๊ฐ™์€ ์œ ํ˜•์œผ๋กœ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. 

์—ฌ๊ธฐ์„œ ์šฐ๋ฆฌ๋Š” self์™€ Self๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋˜๋Š”๋ฐ ์„œ๋กœ ๋‹ค๋ฅธ ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. 

๋จผ์ € self๋Š” ๊ตฌ์กฐ์˜ ํ˜„์žฌ๊ฐ€์น˜๋ฅผ ์˜๋ฏธํ•˜๊ณ  Self๋Š” ํ˜„์žฌ ์œ ํ˜•์„ ์˜๋ฏธํ•œ๋‹ค. 

 

 

 

 

์ž! ์ด์ œ ์ •์  ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ์ฃผ์š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋ฐ”๋กœ ํ™•์ธํ•ด๋ณด์ž!๐Ÿ•ต๏ธ‍โ™‚๏ธ

 

struct AppData {
    static let version = "1.3 beta 2"
    static let saveFilename = "settings.json"
    static let homeURL = "https://www.hackingwithswift.com"
}

๋จผ์ € ์ •์  ์†์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ์•ฑ์—์„œ ๊ณตํ†ต ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ์„ฑํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ์—ฌ๋Ÿฌ ๊ณณ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋งŽ์€ ๊ณต์œ  ๊ฐ’์„ ์ €์žฅํ•˜๋Š” AppData์™€ ๊ฐ™์€ ๊ตฌ์กฐ์ฒด๊ฐ€ ์žˆ๋‹ค.

์ด ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด ์•ฑ์˜ ๋ฒ„์ „ ๋ฒˆํ˜ธ(ํ™”๋ฉด, ๋””๋ฒ„๊ทธ ์ถœ๋ ฅ, ๋กœ๊น… ์ •๋ณด, ์ง€์› ์ด๋ฉ”์ผ ๋“ฑ)๋ฅผ ํ™•์ธํ•˜๊ฑฐ๋‚˜ ํ‘œ์‹œํ•ด์•ผ ํ•˜๋Š” ๋ชจ๋“  ๊ณณ์—์„œ AppData.version์„ ์ฝ์„ ์ˆ˜ ์žˆ๋‹ค.

 

 

๊ทธ๋ฆฌ๊ณ  ๋‘ ๋ฒˆ์งธ๋กœ๋Š” ๊ตฌ์กฐ์ฒด์˜ ์˜ˆ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ธ๋ฐ SwifUI๋ฅผ ๊ฐœ๋ฐœํ•˜๋ฉด์„œ ์•ฑ์˜ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์„ ๋•Œ ๊ฐ€์žฅ ์ž˜ ์ž‘๋™ํ•˜๋ฉด์„œ ์ด๋Ÿฐ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋Š” ์ƒ˜ํ”Œ ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ์ด์— ๋Œ€ํ•œ ์˜ˆ์‹œ๋Š” ๋‹ค์Œ ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ํ™•์ธํ•ด๋ณด์ž.

 

struct Employee {
    let username: String
    let password: String

    static let example = Employee(username: "cfederighi", password: "hairforceone")
}

์ด์ œ ์„ค๊ณ„ ๋ฏธ๋ฆฌ๋ณด๊ธฐ์—์„œ ์ž‘์—…ํ•  ์ง์› ์ธ์Šคํ„ด์Šค๊ฐ€ ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค Employee.example์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. 

 

 

 


learning by repetition

๋ฐ˜์‘ํ˜•

'iOS > Swift ๋ฌธ๋ฒ•' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

๊ตฌ์กฐ์ฒด  (0) 2022.08.14
ํด๋กœ์ € & ํ›„ํ–‰ ํด๋กœ์ €  (0) 2022.08.08
๋งค๊ฐœ๋ณ€์ˆ˜  (0) 2022.07.24
ํ•จ์ˆ˜  (0) 2022.07.23
๋ฐ˜๋ณต๋ฌธ  (0) 2022.07.15