λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
iOS 🍎/Swift

Swift-05 ꡬ쑰체, 클래슀

by yongmin.Lee 2021. 1. 31.

κ΅¬μ‘°μ²΄λž€

- μƒˆλ‘œμš΄ 데이터 νƒ€μž…μ„ μ •μ˜

- ꡬ쑰체 내뢀에 값을 μ €μž₯ν•˜κΈ° μœ„ν•΄ ν”„λ‘œνΌν‹°λ₯Ό μ •μ˜

- ꡬ쑰체 λ‚΄λΆ€μ—μ„œ κΈ°λŠ₯ 싀행을 μœ„ν•΄ λ©”μ„œλ“œλ₯Ό μ •μ˜

- κ°’ νƒ€μž… : ꡬ쑰체둜 μ •μ˜ν•œ νƒ€μž…μ˜ 값이 μ „λ‹¬λ λ•ŒλŠ” ν•΄λ‹Ή 값이 λ³΅μ‚¬λ˜μ–΄ μ „λ‹¬λœλ‹€

- μ΄λ‹ˆμ…œλΌμ΄μ € μ •μ˜ κ°€λŠ₯

- 상속 λΆˆκ°€λŠ₯, νƒ€μž…μΊμŠ€νŒ… λΆˆκ°€λŠ₯, λ””μ΄λ‹ˆμ…œλΌμ΄μ € λΆˆκ°€λŠ₯

 

ꡬ쑰체λ₯Ό μ‚¬μš©ν•˜λŠ” 경우

- μ—°κ΄€λœ κ°„λ‹¨ν•œ κ°’μ˜ 집합을 μΊ‘μŠν™”ν•˜λŠ” 것이 λͺ©μ μΌ λ•Œ

- μΊ‘μŠν™”ν•œ 값을 μ°Έμ‘°ν•˜λŠ” 것보닀 λ³΅μ‚¬ν•˜λŠ” 것이 ν•©λ‹Ήν•  λ•Œ

- ꡬ쑰체에 μ €μž₯된 ν”„λ‘œνΌν‹°κ°€ κ°’ νƒ€μž…μ΄κ³  참쑰보닀 λ³΅μ‚¬ν•˜λŠ” 것이 ν•©λ‹Ήν•  λ•Œ

- λ‹€λ₯Έ νƒ€μž…μœΌλ‘œλΆ€ν„° μƒμ†λ°›κ±°λ‚˜ μžμ‹ μ„ 상속할 ν•„μš”κ°€ 없을 λ•Œ

 

ꡬ쑰체 문법

ꡬ쑰체 ν”„λ‘œνΌν‹° 및 λ©”μ„œλ“œ κ΅¬ν˜„
struct Sample {

    // κ°€λ³€ ν”„λ‘œνΌν‹°(κ°’ λ³€κ²½ κ°€λŠ₯)
    var mutableProperty: Int = 100 
    
    // λΆˆλ³€ ν”„λ‘œνΌν‹°(κ°’ λ³€κ²½ λΆˆκ°€λŠ₯)
    let immutableProperty: Int = 100 
    
    // νƒ€μž… ν”„λ‘œνΌν‹°(static ν‚€μ›Œλ“œ μ‚¬μš© : νƒ€μž… μžμ²΄κ°€ μ‚¬μš©ν•˜λŠ” ν”„λ‘œνΌν‹°)
    static var typeProperty: Int = 100 
    
    // μΈμŠ€ν„΄μŠ€ λ©”μ„œλ“œ(μΈμŠ€ν„΄μŠ€κ°€ μ‚¬μš©ν•˜λŠ” λ©”μ„œλ“œ)
    func instanceMethod() {
        print("instance method")
    }
    
    // νƒ€μž… λ©”μ„œλ“œ(static ν‚€μ›Œλ“œ μ‚¬μš© : νƒ€μž… μžμ²΄κ°€ μ‚¬μš©ν•˜λŠ” λ©”μ„œλ“œ)
    static func typeMethod() {
        print("type method")
    }
}

 

ꡬ쑰체 μ‚¬μš©

// κ°€λ³€ μΈμŠ€ν„΄μŠ€ 생성
var mutable: Sample = Sample()
mutable.mutableProperty = 200
//mutable.immutableProperty = 200 // ERROR! : λΆˆλ³€ ν”„λ‘œνΌν‹°λŠ” μˆ˜μ • λΆˆκ°€λŠ₯

// λΆˆλ³€ μΈμŠ€ν„΄μŠ€ 생성
let immutable: Sample = Sample()
//immutable.mutableProperty = 200 // ERROR! : κ°€λ³€ ν”„λ‘œνΌν‹° μˆ˜μ • λΆˆκ°€λŠ₯
//immutable.immutableProperty = 200 // ERROR! : λΆˆλ³€ ν”„λ‘œνΌν‹° μˆ˜μ • λΆˆκ°€λŠ₯


// νƒ€μž… ν”„λ‘œνΌν‹° 및 λ©”μ„œλ“œ
Sample.typeProperty = 300
Sample.typeMethod() // type method

// μΈμŠ€ν„΄μŠ€μ—μ„œλŠ” νƒ€μž… ν”„λ‘œνΌν‹°λ‚˜ νƒ€μž… λ©”μ„œλ“œ μ‚¬μš©λΆˆκ°€λŠ₯
//mutable.typeProperty = 400 // ERROR!
//mutable.typeMethod() // ERROR!

 

ν΄λž˜μŠ€λž€

- μƒˆλ‘œμš΄ 데이터 νƒ€μž…μ„ μ •μ˜

- ꡬ쑰체 내뢀에 값을 μ €μž₯ν•˜κΈ° μœ„ν•΄ ν”„λ‘œνΌν‹°λ₯Ό μ •μ˜

- ꡬ쑰체 λ‚΄λΆ€μ—μ„œ κΈ°λŠ₯ 싀행을 μœ„ν•΄ λ©”μ„œλ“œλ₯Ό μ •μ˜

- μ°Έμ‘° νƒ€μž… : ꡬ쑰체둜 μ •μ˜ν•œ νƒ€μž…μ˜ 값이 μ „λ‹¬λ λ•ŒλŠ” ν•΄λ‹Ή κ°’μ˜ μ°Έμ‘°μ£Όμ†Œκ°€ μ „λ‹¬λœλ‹€

- μ΄λ‹ˆμ…œ 라이저 μ •μ˜ κ°€λŠ₯

- λ””μ΄λ‹ˆμ…œλΌμ΄μ € μ •μ˜ κ°€λŠ₯, 상속 κ°€λŠ₯, 클래슀 μΈμŠ€ν„°μŠ€μ— λŒ€ν•΄ νƒ€μž…μΊμŠ€νŒ… κ°€λŠ₯
- 닀쀑상속 λΆˆκ°€λŠ₯

 

클래슀 문법

class Sample {
    // κ°€λ³€ ν”„λ‘œνΌν‹°
    var mutableProperty: Int = 100 

    // λΆˆλ³€ ν”„λ‘œνΌν‹°
    let immutableProperty: Int = 100 
    
    // νƒ€μž… ν”„λ‘œνΌν‹°
    static var typeProperty: Int = 100 
    
    // μΈμŠ€ν„΄μŠ€ λ©”μ„œλ“œ
    func instanceMethod() {
        print("instance method")
    }

    // νƒ€μž… λ©”μ„œλ“œ 1
    // μƒμ†μ‹œ μž¬μ •μ˜ λΆˆκ°€ νƒ€μž… λ©”μ„œλ“œ - static ν‚€μ›Œλ“œ μ‚¬μš©
    static func typeMethod() {
        print("type method - static")
    }
    
    // νƒ€μž… λ©”μ„œλ“œ 2
    // μƒμ†μ‹œ μž¬μ •μ˜ κ°€λŠ₯ νƒ€μž… λ©”μ„œλ“œ - class ν‚€μ›Œλ“œ μ‚¬μš©
    class func classMethod() {
        print("type method - class")
    }
}

 

클래슀 μ‚¬μš©

// μΈμŠ€ν„΄μŠ€ 생성 - 참쑰정보 μˆ˜μ • κ°€λŠ₯
var mutableReference: Sample = Sample()
mutableReference.mutableProperty = 200
//mutableReference.immutableProperty = 200 // ERROR : λΆˆλ³€ ν”„λ‘œνΌν‹° μˆ˜μ • λΆˆκ°€λŠ₯

// μΈμŠ€ν„΄μŠ€ 생성 - 참쑰정보 μˆ˜μ • λΆˆκ°€
let immutableReference: Sample = Sample()
//immutableReference = mutableReference // ERROR : "μΈμŠ€ν„΄μŠ€μ˜ 참쑰정보" λ³€κ²½ λΆˆκ°€λŠ₯
immutableReference.mutableProperty = 200 // 클래슀의 μΈμŠ€ν„΄μŠ€λŠ” μ°Έμ‘° νƒ€μž…μ΄λ―€λ‘œ let으둜 μ„ μ–Έλ˜μ—ˆλ”λΌλ„ μΈμŠ€ν„΄μŠ€ "ν”„λ‘œνΌν‹°μ˜ κ°’"은 λ³€κ²½κ°€λŠ₯
//immutableReference.immutableProperty = 200 // ERROR : μ°Έμ‘° νƒ€μž…μ΄λΌλ„ λΆˆλ³€ μΈμŠ€ν„΄μŠ€μ˜ λΆˆλ³€ ν”„λ‘œνΌν‹° κ°’ λ³€κ²½ λΆˆκ°€λŠ₯

// νƒ€μž… ν”„λ‘œνΌν‹° 및 λ©”μ„œλ“œ
Sample.typeProperty = 300
Sample.typeMethod() // type method

// μΈμŠ€ν„΄μŠ€μ—μ„œλŠ” νƒ€μž… ν”„λ‘œνΌν‹°λ‚˜ νƒ€μž… λ©”μ„œλ“œ μ‚¬μš© λΆˆκ°€λŠ₯ 
//mutableReference.typeProperty = 400 // ERROR!
//mutableReference.typeMethod()	// ERROR!

'iOS 🍎 > Swift' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

Switf07 - ꡬ쑰체 vs 클래슀 vs μ—΄κ±°ν˜•  (0) 2021.02.01
Swift-06 μ—΄κ±°ν˜•  (0) 2021.02.01
Swfit-04 Optional  (0) 2021.01.26
Swift-03 ν•¨μˆ˜  (0) 2021.01.26
Swift-02 κΈ°λ³Έ λ°μ΄ν„°νƒ€μž…  (0) 2021.01.26