-
[Swift] μΈμ€ν΄μ€(instance)iOS/Swift 2022. 8. 3. 23:45
π‘ νμ΅ν λ΄μ©
- κΈ°λ³Έκ° ν λΉ
- μ΄λμ λΌμ΄μ
- μ΅μ λ
- μ€ν¨ κ°λ₯ν μ΄λμ λΌμ΄μ
- λμ΄λμ λΌμ΄μ
μΈμ€ν΄μ€κ° μμ±μ΄ λκΈ° μ νλ‘νΌν° κ°λ€μ΄ μ΄κΈ°νκ° λμ΄μμ΄μΌ ν©λλ€.
λ§μ½ μ΄κΈ°κ°μ΄ μλ ν΄λμ€λ₯Ό μ μΈνλ©΄ μ΄λ»κ² λ κΉμ?
class StudentB { var name: String var age: Int var major: String
class StudentBμ μ΄κΈ°κ°μ΄ μλ€λ μ»΄νμΌ μ€λ₯κ° λ°μνκ² λ©λλ€.
π‘ νλ‘νΌν° κ°μ μ΄κΈ°ννλ λ°©λ²μ λν΄ μμλ΄ μλ€.
1. κΈ°λ³Έκ° ν λΉ
λͺ¨λ μ μ₯ νλ‘νΌν°μ κΈ°λ³Έκ°μ ν λΉνλ λ°©λ²μ λλ€.
λ°λ‘ μ΄λμ λΌμ΄μ λ₯Ό ν΅ν΄ μ΄κΈ°κ°μ ν λΉνμ§ μμλ λ©λλ€.
μμ)
class StudentA { var name: String = " " //μ΄λ¦ var age: Int = 0 //λμ΄ var major: String = " " //μ 곡 } // μΈμ€ν΄μ€ μμ± let John: StudentA = StudentA() // μΈμ€ν΄μ€ μ¬μ© John.name = "John" John.age = 24 John.major = "Digital Media"
2. μ΄λμ λΌμ΄μ (init)
init ν€μλλ₯Ό μ¬μ©ν΄μ νλ‘νΌν° κΈ°λ³Έκ°μ μ¬μ©νμ§ μλλΌλ μΈμ€ν΄μ€κ° μμ±μ΄ λμ λ μνλ κ°λ€μ λ£μ΄μ€ μ μμ΅λλ€.
μμ)
class StudentB { var name: String var age: Int var major: String // μ΄λμ λΌμ΄μ λ‘ μ΄κΈ°κ° μ€μ init(name: String, age: Int, major: String) { self.name = name self.age = age self.major = major } } let Jessi: StudentB = StudentB(name: "Jessi", age: 23, major: "Visual Design")
selfλ?
- λ³μλͺ μ selfλ₯Ό λΆμ¬μ μ΄λ¦μ΄ κ°λλΌλ μλ‘ κ΅¬λΆν μ μμ΅λλ€
- init ν€μλμ 맀κ°λ³μλͺ (name)κ³Ό λ³μλͺ (name)μ΄ κ°μ κ²½μ° μ»΄νμΌλ¬κ° λ λ§νλ κ±΄μ§ ν·κ°λ €ν©λλ€π
3. μ΅μ λ
νλ‘νΌν° κ°μ΄ κΌ νμν κ²μ΄ μλμ λͺ μνκ³ μΆμ λ μ΅μ λμ μ¬μ©ν μ μμ΅λλ€.
μ΅μ λ νλ‘νΌν°λ μ΄κΈ°ννμ§ μμλ λ©λλ€.
μμ)
class StudentC { var name: String var age: Int var major: String? //μ΅μ λ //νλ‘νΌν° 3κ° κ° λͺ¨λ μ΄κΈ°ννλ κ²½μ° init(name: String, age: Int, major: String) { self.name = name self.age = age self.major = major } //μ΅μ λμ μ μΈν 2κ° κ°μ μ΄κΈ°ννλ κ²½μ° init(name: String, age: Int) { self.name = name self.age = age } } // μΈμ€ν΄μ€ μμ± let Jenny: StudentC = StudentC (name: "Jenny", age: 25) let Mike: StudentC = StudentC (name: "Mike", age: 21, major: "Design")
- μμμ μΆμΆ μ΅μ
λ
μ£Όμν μ μ ownerμ κ°μ μμμ μΆμΆ μ΅μ λλ‘ μ μΈνκΈ° λλ¬Έμ owner νλ‘νΌν°λ₯Ό μ¬μ©νλ ν¨μλ₯Ό λ°λ‘ νΈμΆνλ©΄ μλ¬κ° λ°μν©λλ€(μμ§ ownerμ κ°μ nilμΈ μνμ΄κΈ° λλ¬Έ)class Puppy { var name: String var owner: StudentC! init(name: String) { self.name = name } func goOut() { print("\\(name)κ° μ£ΌμΈ \\(owner.name)μ μ°μ± μ ν©λλ€") } } // μΈμ€ν΄μ€ μμ± let cloud: Puppy = Puppy(name: "cloud") // cloud.goOut() //μ£ΌμΈμ μμ§ nilμΈ μνμ΄λ€ cloud.owner = Jenny cloud.goOut()
- ownerμ κ°μ ν λΉν λ€ ν¨μλ₯Ό νΈμΆν΄μΌ ν©λλ€.
- μΈμ€ν΄μ€ μ¬μ©μ κΌ νμνμ§λ§ μ΄κΈ°κ°μ ν λΉνκ³ μΆμ§ μμ λ μ¬μ©ν μ μμ΅λλ€.
4. μ€ν¨ κ°λ₯ν μ΄λμ λΌμ΄μ
- μ΄λμ λΌμ΄μ μ μ λ¬μΈμλ‘ μλͺ»λ κ°μ΄λ μ μ νμ§ λͺ»ν κ°μ΄ μ λ¬λμμ λ μ€ν¨ κ°λ₯μ±μ λ΄ν¬ν μ΄λμ λΌμ΄μ λ₯Ό μ μν μ μμ΅λλ€.
- init? ν€μλλ‘ κ΅¬νν μ μμ΅λλ€.
μμ)
class StudentD { let name: String let age: Int? init?(name: String, age: Int) { if name.isEmpty || age < 0{ return nil } self.name = name self.age = age } }
init? ν€μλλ₯Ό μ¬μ©νκΈ° λλ¬Έμ return κ°μΌλ‘ nilμ κ°μ§ μ μμ΅λλ€.
5. λμ΄λμ λΌμ΄μ
ν΄λμ€μμλ§ μ¬μ©ν μ μκ³ , λ©λͺ¨λ¦¬μμ μλ©ΈλκΈ° μ μ 리 μμ μ ꡬνν©λλ€.
μμ)
class Person { var name: String var pet: Puppy? //μ΅μ λ var child: StudentC init(name: String, child: StudentC) { self.name = name self.child = child } deinit { if let petName = pet?.name { print("\(name)κ° \(child.name)μκ² \(petName)μ μΈλν©λλ€") self.pet?.owner = child } } } // μΈμ€ν΄μ€ μμ± let donald: Person? = Person(name: "Donald", child: Jenny)
'iOS > Swift' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Swift] μ κ·Ό μ μ΄ (0) 2022.08.05 [Swift] λλ€ μ«μ λ§λλ λ°©λ²(Randomisation) (0) 2022.08.04 [Swift] νλ‘νΌν°(property) (0) 2022.08.02 [Swift] ꡬ쑰체(struct)μ ν΄λμ€(class) (0) 2022.08.02 [Swift] μ΅μ λ(Optional) (0) 2022.07.26