🍎 Apple/Swift

[Swift] Swift의 λ©”μ„œλ“œ 정리 (μΈμŠ€ν„΄μŠ€ λ©”μ„œλ“œ, νƒ€μž… λ©”μ„œλ“œ, 클래슀 λ©”μ„œλ“œ, 정적 λ©”μ„œλ“œ)

JINiOS 2024. 6. 21. 19:16
728x90

 

λ“€μ–΄κ°€κΈ° 전에

λ“€μ–΄κ°€κΈ° μ•žμ„œμ„œ λ¨Όμ € λ©”μ„œλ“œμ™€ ν•¨μˆ˜μ˜ 차이λ₯Ό μ•Œκ³  κ³„μ‹ κ°€μš”?

ν•¨μˆ˜μ™€ λ©”μ„œλ“œλŠ” λΉ„μŠ·ν•΄λ³΄μ΄μ§€λ§Œ 차이가 μžˆλ‹΅λ‹ˆλ‹€.

 

λ©”μ„œλ“œλŠ” νŠΉμ • μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” ν•¨μˆ˜μ™€ λΉ„μŠ·ν•˜μ§€λ§Œ, 객체 λ‚΄λΆ€μ˜ 데이터에 μ ‘κ·Όν•  수 μžˆλ‹€λŠ” μ μ—μ„œ 차이가 μžˆμŠ΅λ‹ˆλ‹€.

 

ν•¨μˆ˜λŠ” λ…λ¦½μ μœΌλ‘œ μ‘΄μž¬ν•˜λ©°, νŠΉμ • νƒ€μž…μ— μ†ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

λ°˜λ©΄μ— λ©”μ„œλ“œλŠ” 클래슀, ꡬ쑰체, μ—΄κ±°ν˜• λ“±μ˜ νŠΉμ • νƒ€μž…μ— 속해 있으며, ν•΄λ‹Ή νƒ€μž…μ˜ μΈμŠ€ν„΄μŠ€μ— μ—°κ²°λ˜μ–΄ μ‚¬μš©λ©λ‹ˆλ‹€.

 

λ‘˜μ˜ 차이λ₯Ό μ΄ν•΄ν–ˆλ‹€λ©΄, 이제 λ©”μ„œλ“œμ— λŒ€ν•΄ μ•Œμ•„λ΄…μ‹œλ‹€.

 

 

Swift의 λ©”μ„œλ“œ

SwiftλŠ” λ‹€μŒκ³Ό 같은 λ„€ 가지 μ£Όμš” λ©”μ„œλ“œ μœ ν˜•μ„ μ œκ³΅ν•©λ‹ˆλ‹€: μΈμŠ€ν„΄μŠ€ λ©”μ„œλ“œ, νƒ€μž… λ©”μ„œλ“œ(클래슀 λ©”μ„œλ“œ, μ •μ  λ©”μ„œλ“œ)μž…λ‹ˆλ‹€. 각각의 νŠΉμ„±κ³Ό μ‚¬μš© μ˜ˆμ‹œλ₯Ό μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

 

 

1. μΈμŠ€ν„΄μŠ€ λ©”μ„œλ“œ (Instance Methods)

 

μΈμŠ€ν„΄μŠ€ λ©”μ„œλ“œλŠ” νŠΉμ • 클래슀, ꡬ쑰체, λ˜λŠ” μ—΄κ±°ν˜•μ˜ μΈμŠ€ν„΄μŠ€ λ‚΄μ—μ„œ 호좜될 수 μžˆλŠ” λ©”μ„œλ“œμž…λ‹ˆλ‹€. μΈμŠ€ν„΄μŠ€ λ©”μ„œλ“œλŠ” μΈμŠ€ν„΄μŠ€μ˜ 속성에 μ ‘κ·Όν•˜κ±°λ‚˜ μˆ˜μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

class Counter {
    var count = 0
    
    func increment() {
        count += 1
    }
    
    func reset() {
        count = 0
    }
}

var counter = Counter()
counter.increment() // count = 1
counter.reset() // count = 0

 

var counter = Counter() μ΄λ ‡κ²Œ μΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±ν•˜κ³  μ‚¬μš©ν•˜κΈ° λ•Œλ¬Έμ— μΈμŠ€ν„΄μŠ€ λ©”μ„œλ“œλΌκ³  λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€!

 

 

 

2. νƒ€μž… λ©”μ„œλ“œ (Type Methods)

 

νƒ€μž… λ©”μ„œλ“œλŠ” νŠΉμ • νƒ€μž… μžμ²΄μ—μ„œ ν˜ΈμΆœλ˜λŠ” λ©”μ„œλ“œλ‘œ, μΈμŠ€ν„΄μŠ€κ°€ μ•„λ‹Œ νƒ€μž… 자체의 κΈ°λŠ₯을 μ œκ³΅ν•˜λŠ” λ©”μ„œλ“œμž…λ‹ˆλ‹€. νƒ€μž… λ©”μ„œλ“œμ— 클래슀 λ©”μ„œλ“œ, 정적 λ©”μ„œλ“œκ°€ ν¬ν•¨λ©λ‹ˆλ‹€. λ”°λΌμ„œ class ν˜Ήμ€ static ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ μ •μ˜ν•©λ‹ˆλ‹€. 

struct MathUtility {
    static func absoluteValue(of number: Int) -> Int {
        return number >= 0 ? number : -number
    }
}

let result = MathUtility.absoluteValue(of: -5) // result = 5

 

 

2-1. 클래슀 λ©”μ„œλ“œ (Class Methods)

 

클래슀 λ©”μ„œλ“œλŠ” ν΄λž˜μŠ€μ— μ†ν•œ λ©”μ„œλ“œλ‘œ, ν•˜μœ„ ν΄λž˜μŠ€μ—μ„œ μž¬μ •μ˜λ  수 μžˆλŠ” λ©”μ„œλ“œμž…λ‹ˆλ‹€. 클래슀 λ©”μ„œλ“œλŠ” class ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ μ •μ˜λ©λ‹ˆλ‹€.

class Car {
    class func about() -> String {
        return "This is a car."
    }
}

class SportsCar: Car {
    override class func about() -> String {
        return "This is a sports car."
    }
}

print(Car.about()) // "This is a car."
print(SportsCar.about()) // "This is a sports car."

 

 

2-2. 정적 λ©”μ„œλ“œ (Static Methods)

 

정적 λ©”μ„œλ“œλŠ” κ΅¬μ‘°μ²΄λ‚˜ μ—΄κ±°ν˜•κ³Ό 같은 νƒ€μž…μ—μ„œ μ‚¬μš©λ˜λŠ” λ©”μ„œλ“œλ‘œ, μΈμŠ€ν„΄μŠ€λ‚˜ ν•˜μœ„ νƒ€μž…μ—μ„œ μž¬μ •μ˜ν•  수 μ—†μŠ΅λ‹ˆλ‹€. 정적 λ©”μ„œλ“œλŠ” static ν‚€μ›Œλ“œλ‘œ μ •μ˜λ©λ‹ˆλ‹€.

enum Theme {
    static func defaultTheme() -> Theme {
        return .light
    }
    
    case light
    case dark
}

let defaultTheme = Theme.defaultTheme() // defaultTheme = .light

 


 

 

μ΄ν•΄ν•˜κΈ°μ— λΆ€μ‘±ν•˜μ…¨λ‹€λ©΄ μ•„λž˜ μˆœμ„œλ„μ™€ ν‘œλ₯Ό 천천히 보고 λ‹€μ‹œ μ½μ–΄λ³΄λŠ” κ±Έ μΆ”μ²œλ“œλ¦½λ‹ˆλ‹€ πŸ™‚

 

 

 

 

 


 

λΆ€λ”” μ΄ν•΄ν•˜μ‹œλŠ”λ° 도움이 λ˜μ—ˆκΈΈ 바라며 글을 λ§ˆμΉ˜κ² μŠ΅λ‹ˆλ‹€ πŸ™‚

ν‹€λ¦° 뢀뢄이 μžˆλ‹€λ©΄ μ§€μ ν•΄μ£Όμ„Έμš” πŸ›πŸ›

 

728x90