-
Weak Reference - MemoryiOS/π Swift 2021. 1. 2. 20:48
" μ½ν μ°Έμ‘° " κ°ν μ°Έμ‘° μνμ ν΄κ²°νκΈ° μν λ°©λ² μ€ νλ μ λλ€. μ°Έμ‘° νμ μ λ³μμ μ μΈ μμ 'weak' ν€μλλ₯Ό μ¨μ£Όμ΄μ ꡬνν©λλ€. κ°ν μ°Έμ‘°μ λ¬λ¦¬ μ½ν μ°Έμ‘°λ μΈμ€ν΄μ€λ₯Ό μμ ( retain ) νμ§ μκ³ μ°Έμ‘° ( refer ) λ§ ν©λλ€. λ°λΌμ ARC λͺ¨λΈμ reference countingμ μ¦κ°μν€μ§ μμ΅λλ€. λν λμ€μ reference countingμ΄ 0 μ΄ λμ΄ μ°Έμ‘°νκ³ μλ μΈμ€ν΄μ€κ° λ©λͺ¨λ¦¬ ν΄μ λ μ μλλ°, μ΄ λλ nilλ‘ μ΄κΈ°ν λ©λλ€. κΈ°μ‘΄μ κ°μ΄ λ³κ²½λμ΄μΌ νκΈ° ( instance μ£Όμ - > nil ) λλ¬Έμ λ³μ ( var ) μ¬μΌ νκ³ , nilμ λ΄μ μ μμ΄μΌ νκΈ° λλ¬Έμ μ΅μ λμ΄μ¬μΌ ν©λλ€. μ’ ν©μ μΌλ‘, weak ν€μλλ μ΅μ λ μ°Έμ‘° νμ μ λ³μ μ..
-
[Swift] self λ μ΄λ μμ λΆν° μ¬μ©ν μ μμκΉ?iOS/π Swift 2021. 1. 1. 23:45
1μ°¨ μμ : 2021/06/10 μλ νμΈμ. μ€λμ self μ μ κ·Ό κ°λ₯ μμ μ λν΄μ μ μ΄λ³΄λ €κ³ ν©λλ€πΆ μ¬μ€ μ΄ κΆκΈμ¦μ μ κ° μ€μννΈλ₯Ό μ²μ μμν λ¬΄λ ΅ κ°μ§κ²λ κ²μΈλ°, κ²°λ‘ λΆν° λ§μλ리μλ©΄ μ΄ κΆκΈμ¦μ ν΄λμ€μ Initialization Process λ₯Ό μ΄ν΄νλ©΄ μλ²½νκ² ν΄κ²°λ©λλ€π μ μ κ²½νμΌλ‘λ μ΄ μ£Όμ (Initialization Process)λ₯Ό μμ£Ό κΌΌκΌΌνκ² μ¬λ¬λ² μ½μ ν λΉλ‘μ μ΄ν΄κ° λμλ κ² κ°μ΅λλ€. κ·ΈλΌμλ λΆκ΅¬νκ³ μ΄ κΈμ μ μ μ΄μ λ λ§ν λΆλΆμ ν΄κ²°νκΈ° μν΄ Initialization μ 체λ₯Ό λ€μ 곡λΆν΄μΌν μκ°μ΄ μμ΄μ, ad-hoc μΌλ‘ μ°μ μκ³ λμ΄κ°λ €κ³ νμλ λΆλ€μ μν΄μμ λλ€. :: ad-hoc μ΄ λ¬΄μ‘°κ±΄ λμ κ²μ΄λΌκ³ μκ°νμ§λ μμ΅λλ€ μ΄ κΈμμλ In..
-
Strong Reference - MemoryiOS/π Swift 2020. 12. 31. 12:04
"κ°ν μ°Έμ‘°" μ°Έμ‘° νμ μ μΈμ€ν΄μ€λ₯Ό λ³λμ ν€μλ μμ΄ μ μ₯ν λ, κΈ°λ³Έμ μΌλ‘ κ°ν μ°Έμ‘°κ° μκΉλλ€. Swiftμ μ°Έμ‘° νμ : Class, Closure κ°ν μ°Έμ‘°λ₯Ό ν΅ν΄ μ μ₯λ μΈμ€ν΄μ€λ λ³μ νΉμ μμκ° 1. μμ νκ³ , 2. μ°Έμ‘°ν©λλ€. ARCμ λ©λͺ¨λ¦¬ ν΄μ νλ¨ κΈ°μ€ ARCλ μμ ( retain )λ₯Ό κΈ°μ€μΌλ‘ Reference Countingμ ν©λλ€. μλ₯Ό λ€μ΄, μμ κ° 1 μ΄λΌλ©΄ λ©λͺ¨λ¦¬ ν΄μ λ₯Ό νμ§ μκ³ , μμ κ° 0μ΄ λ λ λ©λͺ¨λ¦¬ ν΄μ λ₯Ό ν©λλ€. κ·Έλ λ€λ©΄ μμ κ° 0 μ΄κ³ μ°Έμ‘°κ° 1μΈ μν©μ΄ μμκΉμ? νμ ν weakμ unownedλ₯Ό ν΅ν΄ ꡬνν μ μμ΅λλ€. Reference Count λ₯Ό κ°μμν€λ λ°©λ²μ, μ°Έμ‘°νλ λ³μμ nilμ ν λΉνλ κ²μ λλ€. λ°λΌμ ν΄μ μν€λ €λ©΄ Optiona..
-
ARC - MemoryiOS/π Swift 2020. 12. 30. 23:49
"Auto Reference Counting" λ°°κ²½ λ μ΄μ μ¬μ©λμ§ μλ μΈμ€ν΄μ€κ° λ©λͺ¨λ¦¬μ λ¨μμλ€λ©΄ λ©λͺ¨λ¦¬ λμκ° λ°μν©λλ€. λ©λͺ¨λ¦¬ λμλ μ± μ±λ₯μ μ νλ‘ μ΄μ΄μ§κΈ° λλ¬Έμ μΈμ€ν΄μ€μ μ μ ν ν΄μ λ μ€μν μ΄μμ λλ€. stack μ μ μ₯λ μΈμ€ν΄μ€ ( κ° νμ ) λ ν΄λΉ λΈλ‘μ΄ μ’ λ£λλ©΄ μλμΌλ‘ ν΄μ λμ§λ§, heap μ μ€μ λ°μ΄ν°κ° μ μ₯λ μ°Έμ‘° νμ μ λ©λͺ¨λ¦¬ ν΄μ λ₯Ό μ§μ ν΄μ£Όμ΄μΌ ν©λλ€. MRC μ ARC Apple μ κ°λ°νκ²½ Cocoa μμλ λ©λͺ¨λ¦¬ κ΄λ¦¬ λͺ¨λΈμ΄ λ κ°μ§κ° μ‘΄μ¬ν©λλ€. MRC ( Manual Reference Counting) κ³Ό ARC (Auto Reference Counting) μ λλ€. Objective - C μμλ MRC μ ARCλ₯Ό λͺ¨λ μ§μν©λλ€. νμ§λ§ MRC..
-
[Swift] κ°νμ κ³Ό μ°Έμ‘°νμ ( Value Type vs Reference Type )iOS/π Swift 2020. 12. 29. 18:30
1μ°¨ μμ : 2021.06.06 μλ νμΈμ. μ΄λ² κΈμμλ μ€μννΈμ κ°νμ κ³Ό μ°Έμ‘°νμ μ μ°¨μ΄μ μ λ©λͺ¨λ¦¬μ μ μ₯λλ κ΄μ μμ λ€λ£¨μ΄λ³΄κ² μ΅λλ€πΆ *μμ±κ°μμμμ κ°νμ κ³Ό μ°Έμ‘°νμ μ μλμ°¨μ΄κ° κΆκΈνλ€λ©΄? -> μμ±κ°μμλ (Property Observer) ? Swiftμμ μλ£κ΅¬μ‘°λ€μ λ€μκ³Ό κ°μ νμ μ κ°μ§λλ€. κ° νμ μ°Έμ‘° νμ Structure Enumeration Tuple Class Closure /* Value Type */ struct testStruct { var name = "" var age = 0 } /* Reference Type */ class testClass { var name = "" var age = 0 } λνμ μΈ νμ μΈ Structμ Classλ₯Ό ν΅ν΄ λΉκ΅ν΄ λ³΄κ² μ΅λλ€..
-
Mutability of Collections - CollectionsiOS/π Swift 2020. 12. 1. 02:18
"컬λ μ μ κ°λ³μ±" Swift μ μ£Όμ 컬λ μ μ Arrays, Sets, Dictionaries μ λλ€. μ΄λ€μ λμλ°©μμ λ€λ₯Έ νλ‘κ·Έλλ° μΈμ΄μ ν¬κ² λ€λ₯΄μ§ μκ³ , μμκ°λ₯ν©λλ€. Swift μμ μ΄λ€μ κ°λ³μ±(Mutability) μ varμ ν λΉνλμ§ let μ ν λΉνλμ§μ λ°λΌ λ¬λΌμ§κ² λ©λλ€. var μ ν λΉνλ©΄ mutable μ΄ λκ³ , element μ μΆκ°, μ κ±°, λ³κ²½μ΄ κ°λ₯ν΄μ§λλ€. λ°λλ‘ let μ ν λΉνλ©΄ immutable μ΄ λκ³ , element μ μΆκ°, μ κ±°, λ³κ²½μ΄ λΆκ°λ₯ν΄μ§λλ€. λ¨, element κ° μ°Έμ‘° νμ μΌ κ²½μ°, elementμ μν λ©€λ²μ κ°λ³μ±μλ μν₯μ μ£Όμ§ μμ΅λλ€. κ΄λ ¨ κΈ: Value Type vs Refrence Type νν κ°νμ κ³Ό μ°Έμ‘°νμ μ λΉκ΅ μ€..
-
Self Type - GeneraliOS/π Swift 2020. 11. 27. 23:40
" μ»΄νμΌλ¬κ° 컨ν μ€νΈμ μν΄ μΆλ‘ νλ νμ " *Self Type μ νμ μ λλ€. μμ± self μλ λ€λ₯Έ κ°λ μ λλ€. extension Int { static let zero: Self = 0 // Int λ‘ μΆλ‘ λ©λλ€. var zero: Self { // Int λ‘ μΆλ‘ λ©λλ€. return 0 } func makeZero() -> Self { return Self() // Int λ‘ μΆλ‘ λμ΄ Int μΈμ€ν΄μ€λ₯Ό λ°νν©λλ€. } } Extension, Struct, Class, Enum, Protocol μμ μ¬μ© κ°λ₯ν©λλ€. Protocol μ κ²½μ°, Protocol μ ꡬνν νμ μ Self Type μΌλ‘ μΆλ‘ ν©λλ€. Self Type μ μ₯μ μ, νμ μ μμ‘΄νμ§ μλ λ²μ©μ μΈ μ½λλ₯Ό λ§λ€ μ μ..
-
[Swift] Property Observer (μμ± κ°μμ) λ?iOS/π Swift 2020. 11. 27. 23:18
1μ°¨ μμ : 2021/06/02 "μμ±κ°μ λ³κ²½μ κ°μνλ€" μλ νμΈμ. μ΄λ²μκ°μ μμ± κ°μμμ λν΄μ μμλ³΄κ² μ΅λλ€πΆ μ²μμλ λ¬Έλ² μ λλ§ μ μ κΈμ΄μλλ°, λ°°μ°λ€ 보λ μ κ³ μΆμ λ΄μ©μ΄ λ§μμ Έμ μΆκ°νκ² λλ κ² κ°μμ. κ·ΈλΌ μμν΄λ³Όκ²μ!! μμ± κ°μμ(Property Observer) λ μμ±(Property) μ΄ μλ‘μ΄ κ°μΌλ‘ λ³κ²½ λ λ νΈμΆ λλ μ½λ λΈλμ λλ€. λΈλ‘λ§ μΆκ°ν΄ λμΌλ©΄ μμ±μ΄ λ³κ²½λ λλ§λ€ νΈμΆλμ΄μ μμ±κ°μμλ₯Ό μ¬μ©νλ©΄ μ΄λ²€νΈμ λμνκΈ° μ½μ΅λλ€. var observingValue: String = "Hello" { didSet { self.textLabel.text = observingValue } } μμ μ½λλ₯Ό μλ‘ λ€μλ©΄, observingValue λΌλ String..
-
Side Effect - GeneraliOS/π Swift 2020. 11. 24. 10:05
κ°μ΄λ μνμ λ³κ²½μ΄ μΌμ΄λ¨μ μλ―Έ λ Όλ¦¬μμμ side effectκ° λ°μν μ μλ μ½λλ₯Ό μ΄ν΄λ³΄κ² μ΅λλ€. var a: Int = 1 var b: Int = 2 func addA (val: Int a){ a += 1 return true } func addB (val: Int b){ b += 1 return true } // short circuit μΌλ‘ addB()κ° νΈμΆλμ§ μλλ€ if addA() || addB() { print(a) // 2 print(b) // 1 } λ°λΌμ μλνμ§ μμ λ Όλ¦¬μ μ€λ₯κ° λ°μν μ μμΌλ―λ‘ κΌ νμν κ²½μ°κ° μλλΌλ©΄ 쑰건μμμ ν¨μλ₯Ό νΈμΆνλ μ½λλ μ§μν΄μΌ ν©λλ€. λ. μ΄μ κΈ: Nested Functions - Functions Nested Functions..