-
COW(Copy-on-Write) λ₯Ό μμ보μiOS/π Swift 2022. 12. 29. 23:34
Copy-on-Write κ°μ μ€μ λ‘ μΈ λ (on-write) 볡μ¬νλ€(copy) μ€μ 볡μ¬λ₯Ό λ¦μΆμ΄ ν ν λΉμ μ€μ΄λ μ΅μ ν λ°©λ² Usecases 1. Swift Collection : Array, Dictionary, String λ± 2. 3-word κ° λλ struct λ₯Ό Protocol νμ μΌλ‘ λ€λ£° λ κ° νμ κ³Ό ν μμμ κ΄κ³ Array λ String μ μ€μννΈμμ κ° νμ μ λλ€. κ° νμ μΈμ€ν΄μ€λ κΈ°λ³Έμ μΌλ‘ μ€ν μμμ ν λΉνκ³ κ·Έ κ³³μ κ°μ μ΄κΈ°ννλ κ²μΌλ‘ μλ €μ Έ μμ΅λλ€. κ·Έλ¬λ©΄ κ° νμ κ³Ό ν μμμ μ΄λ€ κ΄λ ¨μ΄ μμκΉμ? Arrray, String λ± Collection μ νμ©νλ νΉμ κ° νμ λ€μ λ°νμμ element μ μΆκ°, μμ κ° κ°λ₯νκΈ° λλ¬Έμν μμ λ°μ΄ν°λ₯Ό ..
-
[Swift] Swift 5.8 CHANGELOGiOS/π Swift 2022. 11. 27. 02:28
SE-0365 μ΄μ ν΄λ‘μ λ΄λΆμμ [weak self] λ‘ μΊ‘μ²ν self λ₯Ό μΈλνν μ΄νμλ self λ₯Ό μλ΅ν΄λ λ©λλ€. class ViewController { let button: Button func setup() { button.tapHandler = { [weak self] in guard let self else { return } dismiss() // refers to `self.dismiss()` } } func dismiss() { ... } } Swift 5 μμλ non-escaping ν΄λ‘μ μμ [weak self] μ΄ν self λ₯Ό λͺ μμ μΌλ‘ μΈκΈνμ§ μμλ λμμ§λ§, Swift 6 λ²μ λΆν°λ λ μ΄μ νμ©λμ§ μμ΅λλ€. self λ₯Ό μΈλννκ±°λ, [unowned self..
-
[Swift] didSet μ΄ νΈμΆλλ μ°λ λλ?iOS/π Swift 2022. 11. 6. 20:14
κ²°λ‘ - setter κ° νΈμΆλλ μ°λ λμμ didSet μ΄ νΈμΆλλ€. - setter κ° λ΄λΆ μ½λμμ λ§μ§λ§μ didSet μ νΈμΆνλ κ²μΌλ‘ 보μΈλ€. - setter λ κ° μ€μ μ½λκ° μ€νλ κ²μ΄λ€. (μμ: text = "abc") - setter κ° λ§μ½ main thread μ΄ μλ μ°λ λ μμ μ€νλμλ€λ©΄, didSet λ ν΄λΉ μ°λ λ μμ μ€νλλ€. κ·Έλμ? - didSet λ΄λΆμ UI μ€μ μ½λλ₯Ό λ£κ³ μ€ννλ©΄ Main Thread Checker μ μν΄ κ²½κ³ λ©μμ§λ₯Ό λ§λ μ μλ€. - UI μμ μ main thread μμ μ€νλμ΄μΌνλ©°, didSet μ main thread μμ μ€νλλ κ²μ 보μ₯νμ§ μκΈ° λλ¬Έμ΄λ€. - μ΄ λλ ν΄λΉ μ½λκ° λ©μΈμ°λ λμμ μ€νλλλ‘ λ³΄μ₯νκ±°λ, p..
-
[Swift] if case let λ₯Ό μ¬μ©νμ¬ λΆνμν μ½λ μ€μ΄κΈ°iOS/π Swift 2022. 1. 16. 21:53
μλ νμΈμπΆ μ΄λ² μκ°μλ if case let ν¨ν΄μ μ¬μ©ν΄ switch-case ꡬ문μ boiler plate λ₯Ό μ€μ¬λ³΄λλ‘ νκ² μ΅λλ€. μΈμ μ°λκ°? μ΄κ±°νμ μ²λ¦¬ν λ λ³΄ν΅ μ λ switch-case λ₯Ό μ¬μ©νμμ΅λλ€. λ¨μΌ case λ§μ μ²λ¦¬νκ³ μΆμ΄λ κ°μ λ°©λ²μ μ¬μ©νμ΅λλ€. λ‘λ³Άμ΄ μ΄κ±°νμ μλ‘ ν λ² λ€μ΄λ³΄μλ©΄: enum λ‘λ³Άμ΄ { case μΌλ° case μΉμ¦ } let λ΄λ‘λ³Άμ΄ = λ‘λ³Άμ΄.μΉμ¦ switch λ΄λ‘λ³Άμ΄ { case .μΉμ¦: μΉμ¦ν νμΉκΈ°() case .μΌλ°: break; } λ§μ½ λ λ§μ μΌμ΄μ€κ° μλλ° νλλ§ μ²λ¦¬νκ³ μΆμ κ²½μ°λΌλ©΄, default λ¬Έμ μ¬μ©ν μλ μμ΅λλ€. switch λ΄λ‘λ³Άμ΄ { case .μΉμ¦: μΉμ¦ν νμΉκΈ°() default: break } μ΄λ κ² λ¨..
-
[Swift] Any μ AnyObjectiOS/π Swift 2021. 10. 16. 10:49
1μ°¨ μμ : 21.10.17 μλ νμΈμπΆ μ΄λ² μκ°μλ Any μ AnyObject λ₯Ό μ 리ν΄λ³΄μμ΅λλ€. ꡬ체μ μΈ νμ μ΄ μλ μ무 νμ μΌλ‘ μμ νκΈ° μν΄ μ€μννΈκ° μ 곡νλ λ κ°μ§ νΉλ³ν νμ Any νμ λ³μμ λ£μ΄μ£Όλ κ²μ΄ νμ 컨λ²μ μ΄ μλ νμ μΊμ€ν μμ μ μνμ. Any μ AnyObject νμ μ μμ±μλ₯Ό μ 곡νμ§ μλλ€. μλλ μΊμ€ν μ νΉμ§ ππ»ππ»ππ»ππ» Casting doesn’t actually modify the instance or change its values. The underlying instance remains the same; it’s simply treated and accessed as an instance of the type to which it has b..
-
[Swift] Metatype μ΄λ?iOS/π Swift 2021. 10. 2. 21:47
μλ νμΈμπΆ μ΄λ² μκ°μλ λ©ννμ μ λν΄μ μμλ³΄λ €κ³ ν©λλ€. κ·ΈλΌ μμν΄λ³Όκ²μ!!π₯ λ©ννμ : νμ μ νμ λ©ννμ μ νμ μ νμ μ λλ€. μ΄ νμ μλ class, structure, enumeration, protocol νμ μ ν¬ν¨ν©λλ€. μλ κ·Έλ¬λ©΄ String μ νμ μΈλ° κ·ΈλΌ λ©ννμ μ String μ νμ μ΄λΌλ 건κ°μ? λ§μ΅λλ€. κ·Έλ¦¬κ³ String μ νμ μ String.Type μ λλ€!!! γ γ γ μ²μμλ μ΄ κ°λ μ μ΄ν΄νκΈ° μ½μ§ μλλ°μ. λ©ννμ μ νμ μ체λ₯Ό κ°λ¦¬μΌμΌν κ²½μ° (refer to)κ° μκΈ° λλ¬Έμ λ§λ€μ΄μ‘μ΅λλ€. κ·Έλ¦¬κ³ μ¬μ€ μ°λ¦¬λ μ§κΈκΉμ§ λ©ννμ μ μΈμ€ν΄μ€μΈ [νμ ]μ μ μ¬μ©ν΄μ€κ³ μμμ΅λλ€. 그건 λμ€μ 보λλ‘νκ³ μ°μ μ κ° λ§λ κ·Έλνλ₯Ό νλ² λ³΄μ¬λ릴κ²μ. μ΄ν΄..
-
[Swift] Extensions μ΄μ 리 (μμ μ€)보νΈκΈ 2021. 5. 27. 07:47
보νΈλμ΄ μλ κΈμ λλ€.
-
[Swift] νλ‘ν μ½ μ΄μ 리iOS/π Swift 2021. 5. 22. 15:11
[ νλ‘ν μ½ κ°μ ] - https://woozzang.tistory.com/44 μμ½: νλ‘ν μ½μ μꡬμ¬νμ΄λ©°, νλ‘ν μ½μ μ±νν νμμ μꡬμ¬νμ λ°λμ ꡬνν΄μΌν©λλ€. [ μμ± μꡬμ¬ν ] - https://woozzang.tistory.com/45 μμ½: νλ‘ν μ½μμ μμ±μ κ°λ³μ±κ³Ό μκ΄μμ΄ λ°λμ var ν€μλλ§ μ¬ μ μμ΅λλ€. [ λ©μλ μꡬμ¬ν ] - https://woozzang.tistory.com/48 μμ½: λ©μλ μꡬμ¬νμ κ·μΉμ μμ± μꡬμ¬νκ³Ό μ μ¬ν©λλ€. [ μμ±μ μꡬμ¬ν ] - https://woozzang.tistory.com/53 μμ½: μμ±μλ ν΄λμ€μ κ²½μ° μμμ λλΉν΄ ꡬνμ `required` ν€μλλ₯Ό λΆμ¬μΌ ν©λλ€. [ μλΈμ€ν¬λ¦½νΈ μꡬμ¬ν ] protocol ..
-
[Swift] - Capturing Values by Closures (κ°μ μΊ‘μ²νλ ν΄λ‘μ )iOS/π Swift 2021. 5. 7. 15:49
ν΄λ‘μ λ μ€μ½ν λ°μ κ°μ μ κ·Όν λ κ°μ μΊ‘μ²ν©λλ€. ν΄λ‘μ μλ Named clousure κ³Ό Unnamed closure κ° μμ§λ§, μ¬κΈ°μλ Unnamed closure λ₯Ό κ°λ¦¬ν΅λλ€. μ°Έκ³ λ‘ Named clousure μ€ global function λ κ°μ μΊ‘μ²νμ§ μμ΅λλ€. κ°μ μΊ‘μ²νλ€λ μλ―Έλ, κ°μ μ°Έμ‘°λ₯Ό νλνλ€λ λ»μ λλ€. λ°λΌμ μ°Έμ‘°λ κ°μ ν΄λ‘μ μ€μ½ν λ΄λΆμμ λ³κ²½λλ©΄, μ€μ κ°λ λ³κ²½λ©λλ€. var count: Int = 0 print(count) // "0" var closure = { count += 1 // μ€μ½ν μΈλΆμ κ°(count)μ μ κ·ΌνμμΌλ―λ‘, μ°Έμ‘°λ₯Ό νλνμμ΅λλ€. } print(count) // "0" :::: ν΄λ‘μ λ₯Ό μ μΈλ§ νμλΏ, νΈμΆνμ§λ μμμ΅λλ€...