ν°μ€ν 리 λ·°
πββοΈ self: νμ μΈμ€ν΄μ€λ₯Ό μλ―Έ
μΈμ€ν΄μ€ μ체 μ κ·Ό μ μ¬μ©λλ μ°Έμ‘°κ°μ΄λ€.
self
λ ν΄λΉ νμ
μ΄ κ° νμ
μΌ κ²½μ°μλ λκ°μ΄ κ° νμ
μ²λΌ λμνκ³ , μ°Έμ‘° νμ
μΌ κ²½μ°λ ν¬μΈν°λ‘μ¨ ν μμμ μ‘΄μ¬νλ ν΄λμ€ μΈμ€ν΄μ€μ μ£Όμλ₯Ό κ°μ§κ² λλ€.
- κ° νμ μμλ stack μμμ μ‘΄μ¬νλ μΈμ€ν΄μ€λ₯Ό κ°λ¦¬ν€λ νν.
- μ°Έμ‘° νμ μμλ heap μμμ μ‘΄μ¬νλ μΈμ€ν΄μ€λ₯Ό κ°λ¦¬ν€λ νν.
κ° νμ μ
self
κ° ν¬μΈν°κ° μλκ²μ μλλ€. λ€λ§ κ° νμ βμ²λΌβ λμν λΏμ λλ€. λ§μ½,self
κ° κ° νμ μ΄μλ€λ©΄ μ°Έμ‘°ν λ λ§λ€ 볡μ¬κ° μΌμ΄λμ μ λλ‘ λ λ³κ²½λ μλλ€.
μ°μ΄λ μ©λ 2κ°μ§
1οΈβ£
μΈμ€ν΄μ€ λ΄λΆμ κ°μ μ΄λ¦μΌλ‘ μ μΈλ λ³μλ€μ μ’ λ λͺ
νν λͺ
μ κ°λ₯νλ€.
class A {
var name: String
init(name: String) {
// β
μ΄λμ
λΌμ΄μ λ΄λΆμ μλ name μ μ§μλ³μ > 맀κ°λ³μ > μΈμ€ν΄μ€ νλ‘νΌν° μμλ‘ λ¬΄μμ μ§μΉνλμ§ μ°Ύμ΅λλ€.
// β
κ·Έλμ name = name μ κ²½μ° λκ° λ€ λ§€κ°λ³μλ₯Ό μ§μΉνκ² λ©λλ€. μ΄λ, μΈμ€ν΄μ€ νλ‘νΌν°λ‘ μ§μΉνκΈ° μν΄μ self λ₯Ό μ¬μ©ν©λλ€.
self.name = name
}
}
2οΈβ£
κ° νμ
μΈμ€ν΄μ€ μ체μ κ°μ μΉννκΈ° μν΄μ μ¬μ©λλ€.
struct A {
var number: Int = 0
mutating func reset() {
// β
ν΄λμ€λ μ°Έμ‘° νμ
μ΄λΌ self νλ‘νΌν°μ λ€λ₯Έ μ°Έμ‘°λ₯Ό ν λΉν μ μμ§λ§ ꡬ쑰체λ μ΄κ±°νμμλ self λ₯Ό μ¬μ©ν΄μ μμ μΌλ‘ κ΅μ²΄ν μ μλ€.
self = A()
}
}
πββοΈ Self: νμ κ·Έ μ체λ₯Ό μλ―Έ
λλ¬Έμλ‘ μμνλ Self
λ λλ¬Έμλ‘ μμνλ κ²μ μ μ μλ―μ΄ νμ
μ μλ―Ένλ€.
λ¬Έλ§₯μ λ°λΌ μλ―Έκ° λ€λ₯Έ Self
- Protocol λ΄λΆ : ν΄λΉ νλ‘ν μ½μ μ±νν νμ μ μλ―Έ. μ΄ κ²½μ°λ νλ‘ν μ½ μμ μ΄ μλλΌ νλ‘ν μ½μ μ±νν νμ μ λ»νλ κ²μ΄λ€.
- ν΄λμ€, ꡬ쑰체, μ΄κ±°ν λ± : ν΄λΉ μΈμ€ν΄μ€μ νμ μ체λ₯Ό λνλ λλ€. λ©μλ μκ·Έλμ²(λ©μλ μ΄λ¦κ³Ό 맀κ°λ³μ 리μ€νΈ)μμ 리ν΄κ°μΌλ‘λ§ μ¬μ©μ΄ κ°λ₯ν©λλ€. λ©μλ λͺΈμ²΄μμλ μ¬μ©ν μ μμ΅λλ€.
class SuperClass {
func someFunc() -> Self {
return self
}
}
class SubClass: SuperClass {}
let superClass = SuperClass()
superClass.someFunc()
// SuperClass
let subClass = SubClass()
subClass.someFunc()
// SubClass
μ 리
μλμ μ½λλ₯Ό ν΅ν΄μ μ λ¦¬κ° κ°λ₯ν κ±°κ°μμ!
func someFunc() -> Self {
return self
}
// Self μ self μ리μ μ΄λ€κ²μ΄ λ€μ΄κ°λμ§ λΉκ΅ν΄λ³΄μ.
func sumFunc(a: Int, b: Int) -> Int {
return a + b
}
Self
λ νμ
μ μλ―ΈνκΈ° λλ¬Έμ λ¦¬ν΄ νμ
μΌλ‘μ¨ μ¬μ©ν μ μμ΄μ!
self
λ μΈμ€ν΄μ€λ₯Ό μλ―ΈνκΈ° λλ¬Έμ λ¦¬ν΄ νμ
μ λ§λ λ¦¬ν΄ μΈμ€ν΄μ€λ‘μ¨ μ¬μ©ν μ μμ΄μ!
βλΈλ‘κ·Έμμ μ΄λ κ² νννλλ° νμ /μΈμ€ν΄μ€ νλ‘νΌν°, νμ /μΈμ€ν΄μ€ λ©μλ?
Self λ νμ
νλ‘νΌν°μ νμ
λ©μλλ₯Ό κ°λ¦¬ν¬ λ μ¬μ©λκ³ ,
self λ μΈμ€ν΄μ€ νλ‘νΌν°μ μΈμ€ν΄μ€ λ©μλλ₯Ό κ°λ¦¬ν¬ λ μ¬μ©λλ€!
- μΈμ€ν΄μ€ νλ‘νΌν°λ μΈμ€ν΄μ€λ₯Ό μμ±ν ν νΈμΆν μ μλ νλ‘νΌν°μμ! μ°λ¦¬κ° κ°μ₯ λ§μ΄ μ¬μ©νλ let, var λ‘ μ μΈλλ νλ‘νΌν°λ€μ΄ μμ£ .
- νμ
νλ‘νΌν°λ νλ‘νΌν°λ₯Ό νμ
μ체μ μ°κ²°ν μ μλλ° κ·Έκ²μ΄ λ°λ‘ νμ
νλ‘νΌν°μμ!
static
ν€μλλ₯Ό μμ λΆμ¬μ€μΌν΄μ! λν, 무쑰건 κΈ°λ³Έκ°μ μ€μΌν©λλ€.
class
λΌλ ν€μλλ₯Ό μμλΆμ¬μΌν λκ° μλλ°, μλμ κ°μ λμ μ¬μ©λμ!
"ν΄λμ€ νμ
μ λν μ°μ° νμ
νλ‘νΌν°(Computed type property)μ κ²½μ°, class
ν€μλλ₯Ό μ¬μ©νμ¬ μλΈν΄λμ€κ° μνΌν΄λμ€μ ꡬνμ μ¬μ μ(override)ν μ μμ΅λλ€β
(μ’ λ μμΈν μ€λͺ μ μνμ λ€λ©΄ μλμ μΆμ²λ₯Ό μ°Έκ³ νμ λ μ’κ² λ€μ!)
Swift ) Properties - Type Properties
- μΈμ€ν΄μ€ λ©μλ μμ μΈμ€ν΄μ€λ₯Ό μμ±ν ν νΈμΆν μ μλ λ©μλμμ.
- νμ
λ©μλ μμ νμ
μ체μ μ°κ²°ν΄μ νΈμΆλλ λ©μλμμ. λ©μλ μμ
static
,class
ν€μλλ₯Ό λΆμ¬μ μ¬μ©ν©λλ€.
static: μλΈν΄λμ€μμ μ€λ²λΌμ΄λλ₯Ό ν μ μλ€.
class: μλΈν΄λμ€μμ μ€λ²λΌμ΄λκ° κ°λ₯νλ€.
κ·Έλμ μμμ΄ κ°λ₯ν ν΄λμ€λ₯Ό μ μΈνκ³ κ΅¬μ‘°μ²΄λ μ΄κ±°νμμλ μμμ΄ λΆκ°λ₯νμ¬ calss λ©μλλ₯Ό μ μΈν μ μμ΄μ!
(μ’ λ μμΈν μ€λͺ μ μνμ λ€λ©΄ μλμ μΆμ²λ₯Ό μ°Έκ³ νμ λ μ’κ² λ€μ!)
[iOS / Swift] Swift λ¬Έλ²μ μμ보μ! - 20νΈ : μΈμ€ν΄μ€ λ©μλμ νμ λ©μλ
κ·Έλ λ€λ©΄ νμ
νλ‘νΌν°μ νμ
λ©μλλ μ΄λμ νμ©λ κΉμ? 곡ν΅μ μΈ κ°μ μ μνλλ° μ μ©νκ² μ°μ΄κ³ , λνμ μΌλ‘ μ±κΈν€ ν¨ν΄
μ μ¬μ©λκ³ μμ΅λλ€!
μΆμ²
[iOS - swift] Self vs self (λλ¬Έμ Selfμ μλ¬Έμ self)](https://ios-development.tistory.com/600)
'iOS' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
iOS) Diffable Data Source μμ보기 (2) | 2022.02.26 |
---|---|
iOS) UICollectionView μμ λΉκ²¨μ μλ‘κ³ μΉ¨ ꡬν(UIRefreshControl) (0) | 2022.02.24 |
iOS) μ€μμ΄νλ‘ pop νκΈ°(+μΆκ°) - enable back swipe gesture (0) | 2022.02.02 |
iOS) dismiss μ λν΄μ μμ보μ (0) | 2022.01.28 |
iOS) μ΅μ λ νμ Any λ‘ μ μΊμ€ν (0) | 2022.01.26 |
- configurable widget
- CloneCoding
- OpenSourceLibrary
- SwiftUI
- MOYA
- Widget
- Algorithm
- WWDC22
- YPImagePicker
- Swift
- Protocol
- RxCocoa
- Notification
- APNS
- watchOS
- IOS
- github
- UserDefaults
- 2022 KAKAO TECH INTERNSHIP
- urlsession
- projectsetting
- rxswift
- μλ²ν΅μ
- containerBackground
- Objective-C
- Firebase
- WidgetKit
- WWDC
- async/await
- MVVM
μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Total
- Today
- Yesterday