OptimizationTips λ¬Έμμμ Value Type(κ° νμ )μ COW(Copy-on-Write) μ΅μ νλ₯Ό μ¬μ©νλ€κ³ ν©λλ€. COW μ λν΄μ μμ보기 μ μ νμ μ λ°λΌμ μ΄λ ν μμΌλ‘ 볡μ¬νλμ§ μμλ΄ μλ€. β Swift μμ κ° νμ κ³Ό μ°Έμ‘° νμ μ λ³΅μ¬ λ°©μμ λ€λ¦ λλ€. κ° νμ : κΉμ 볡μ¬(deep copy). λ°μ΄ν° μ체λ₯Ό 볡μ¬νλ λ°©λ². λ 립μ μΈ λ©λͺ¨λ¦¬λ₯Ό μ°¨μ§νκΈ° λλ¬Έμ 볡μ¬ν μΈμ€ν΄μ€μ λ°μ΄ν°λ₯Ό λ°κΎΈλλΌλ μλ³Έμ μν₯μ μ£Όμ§ μμ΅λλ€. μ°Έμ‘° νμ : μμ 볡μ¬(shallow copy). μ΅μνμ 볡μ¬λ§ μ§ν. 볡μ¬λ₯Ό ν λ μ£Όμκ°μ 곡μ νλ€. μλ³Έκ³Ό 볡μ¬λ³Έμ΄ κ°μ μ£Όμκ°μ 곡μ νλ―λ‘ ν μͺ½μ λ°μ΄ν°λ₯Ό λ°κΎΈλ©΄ λ€λ₯Έμͺ½μ μν₯μ μ€λλ€. κ° νμ μ μμ νμ§ μμλ λ§€λ² λ°μ΄ν°λ₯Ό 볡μ¬ν λ..
μ’ λ κ·Όλ³Έμ μΈ μ§λ¬Έμ λμ Έλ³΄μ. β DispatchQueue μμ strong reference cycle(κ°ν μ°Έμ‘° μν) μ λ°μν μ μλκ°? λΌλ μ§λ¬Έμ λν΄μ κ²°λ‘ μ μΌλ‘λ λ³μλ‘ μ μ₯νμ§ μμΌλ©΄ κ°ν μ°Έμ‘° μνμ΄ λ°μνμ§ μλλ€. μ¦, DispatchQueue λ₯Ό μ΄λμ λΌμ΄μ λ₯Ό ν΅ν΄ λ§λ€μ΄μ λ³μμ μ μ₯νμ§ μ¬μ©νμ§ μλ μ΄μ κ°ν μ°Έμ‘° μνμ λ°μνμ§ μλλ€. DispatchQueue μ main κ³Ό global μ κ°κ° νμ νλ‘νΌν°μ νμ λ©μλμ΄κΈ° λλ¬Έμ νΈμΆνλ μΈμ€ν΄μ€κ° λ νΌλ°μ€ μΉ΄μ΄νΈλ₯Ό μ¬λ¦¬μ§ μκ³ , κ°ν μ°Έμ‘° μνμμ μμ λ‘μΈ μ μλ€. β [weak self] λ₯Ό μ¬μ©νμ§ μμλ λ κΉ? κ·Έλ λ€λ©΄ [weak self] μ κ°μ μΊ‘μ²λ¦¬μ€νΈλ₯Ό μ¬μ©νμ§ μμλ λ κΉ? κ·ΈλΌμλ λΆκ΅¬νκ³ ..
Is it necessary to use [unowned self] in closures of UIView.animateWithDuration(...)? μ΄ κΈμ μμ stackoverflow μ§λ¬Έμ μ½κ³ μ 리ν΄λ³Έ κΈμ λλ€. μμ±μλμ μ§λ¬Έμ μλμ κ°μλ€. μλμ μ½λλ λ©λͺ¨λ¦¬ λ¦μ νΌν μ μλμ? UIView.animateWithDuration(1, animations: { [unowned self] in self.box.center = self.boxTopRightPosition }, completion: { [unowned self] completed in self.box.hidden = true }) μ΄ κΈμλ κ½€λ λ§μ λΆλΆλ€μ΄ μ°κ²°λμ΄ μκΈ° λλ¬Έμ μ μ ν μ΄ν΄λ΄μΌ ν©λλ€. π§ μ°μ μμ a..
μ΄ κΈμ ‘μ€λλ κ°λ°μκ° μ λλ€κ³ λ§νλ€’ μ± μ μ½κ³ λ΄μ©κ³Ό λλ μ μ μ 리ν κ²μ λλ€. π μν©μ λ§λ μ΄λ―Έμ§ νμ μ΄λ―Έμ§ ν¬λ§·μ λΉνΈλ§΅κ³Ό λ²‘ν° λ°©μμΌλ‘ λλλ€. λΉνΈλ§΅ μ΄λ―Έμ§λ μμ ν½μΈλ€μ΄ λͺ¨μ¬ νλμ μ΄λ―Έμ§λ₯Ό λ§λλ νν. νλνλ©΄ κΉ¨μ Έλ³΄μ΄λ νΉμ§. λ²‘ν° μ΄λ―Έμ§λ μ κ³Ό μ μΌλ‘ μ΄λ£¨μ΄μ§ μ΄λ―Έμ§. νλν΄λ κΉ¨μ§μ§ μλ νΉμ§. λνμ μΌλ‘ JPEG, PNG, GIF, SVG μ΄λ―Έμ§ ν¬λ§·μ΄ μλ€. μμ보μ. 1) JPG(JPEG) μμ€ μμΆ ν¬λ§·μΌλ‘ μμΆν κ²½μ° μ΄λ―Έμ§μ νμ§μ΄ λ¨μ΄μ§μ§λ§, μ©λμ λ§μ΄ μ€μΌ μ μλ€. κ·Έλ¦Ό, μ¬μ§ λ± μΉμμ μ£Όλ‘ μ¬μ©νλ©° λΉνΈλ§΅ λ°©μμ΄λ€. 2) GIF PNG κ° λνλκΈ° μ μ κ°λ°λ 무μμ€ μμΆ ν¬λ§·μ΄λ€. μ λλ©μ΄μ μ μ§μνλ€. μμμ 256κ°μ§λ§ μ§μνκΈ° λλ¬Έμ λ€λ₯Έ..
https://school.programmers.co.kr/learn/courses/30/lessons/118666 import Foundation // 첫 λ²μ§Έ λ¬Έμ : λΉλμ 1-3 // 4 // λ λ²μ§Έ λ¬Έμ : λμ 5-7 func solution(_ survey:[String], _ choices:[Int]) -> String { var choiceDictionary: [Character : Int] = [:] choiceDictionary = ["R" : 0, "T" : 0, "C" : 0, "F" : 0, "J" : 0, "M" : 0, "A" : 0, "N" : 0] var answer: String = "" for (index, choice) in choices.enumerated() {..
μ½λ©ν μ€νΈ μ°μ΅ - λ ν ν© κ°κ² λ§λ€κΈ° μ΅κ·Όμ μ§νλ μ½λ©ν μ€νΈ λ¬Έμ κ° κ³΅κ°κ° λμλ€. swift νμ΄κ° λ§μ΄ μμ΄μ ν΄κ²°ν μ½λλ₯Ό μ¬λ €λ³Έλ€. μ€ν¨ - μ νμ±(56.7/100) import Foundation // μμ΄λμ΄ : // L > Rμ΄λΌλ©΄, queue1μ μμλ₯Ό queue2λ‘ λ겨μ€λλ€. // L Int { var answer: Int = 0 var queue1 = queue1 var queue2 = queue2 let queue1Sum: I..
μλ₯Ό λ€μ΄ λ§μ κ°μ²΄λ€μ΄ ν΄λΉ ν΄λμ€λ₯Ό μμλ°μμ κ°μ λ·°λ₯Ό κ°μ ΈμΌ νλ€λ©΄ μλΈν΄λμ±μ νλ κ²μ΄ μ μ©νλ€. μ΄λ₯Ό ν΅ν΄ μ¬μ¬μ©μ±μ΄ μ’μμ§λ€. κ·Έλ λ€λ©΄ 무쑰건 μλΈν΄λμ±μ νλ κ²μ΄ μ’μκΉ? κ³ λ €ν μ¬νμ λν΄μ μκ°ν΄λ³΄μ. κ³ λ €ν μ¬ν μλΈν΄λμ±μ νλ€λ³΄λ©΄ 볡μ‘νκ³ κΉμ ν΄λμ€λ€μ μμκ΄κ³λ₯Ό λ§λ€κ² λ©λλ€. μ΄λ μλΈν΄λμ±μ νλ λͺ©μ μ΄ μΈν°νμ΄μ€λ§ 곡μ νλ κ²μ΄λΌλ©΄ νλ‘ν μ½μ μ¬μ©νλ κ²μ΄ λ°λμ§ν μ μλ€. λν, λ§μ΄ λ³κ²½λκ±°λ λ§μ ꡬνμ¬νμ λ€λ₯Έ ν΄λμ€μ μμνκ² λλ€λ©΄(μλ₯Ό λ€μ΄, UITableViewDelegate μ κ°μ delegate) λΈλ¦¬κ²μ΄νΈλ₯Ό μ¬μ©νλ κ²μ΄ ν¨μ¬ λμ μΈ ν΄λμ€λ₯Ό λ§λ€κΈ° μ μ©νλ€. ν΄λμ€λ₯Ό νμ₯νκΈ° μν κΈ°λ₯μΌλ‘μ¨ μΉ΄ν κ³ λ¦¬λ μ’μ λ°©λ²μ΄λ€. μΉ΄ν κ³ λ¦¬λ₯Ό ν΅ν΄ νμ₯λ ν΄..
Swift μ dynamic dispatch λ method table μμ ν¨μλ₯Ό μ°Ύμ λ€μ indirect call μ μννμ¬ κ΅¬νλκΈ° λλ¬Έμ direct call λ³΄λ€ μνμ΄ λ립λλ€. λλ indirect call μ λ§μ μ»΄νμΌλ¬ μ΅μ νλ₯Ό λ°©μ§νμ¬ νΈμΆ λΉμ©μ΄ λΉμλλ€. κ·Έλ λ€λ©΄ μλΈν΄λμ±κ³Ό μ€λ²λΌμ΄λ©μ΄ νμμλ κ²½μ°λ static dispatch λ‘ λμνλ κ²μ΄ μ’μ§ μμκΉ? λ§μ΅λλ€, μ±λ₯μ΄ μ€μν μ½λμμ μ±λ₯ ν₯μμ νμνμ§ μμ λ μ΄ dynamic dispatch λμμ μ νν μ μλ λ°©λ²μ΄ νμν©λλ€. μ±λ₯ ν₯μμ μν Static Dispatch λ©μλ λΏλ§ μλλΌ νλ‘νΌν° μμ μ€λ²λΌμ΄λ©μ κ°λ₯μ±μ΄ μκΈ° λλ¬Έμ dynamic dispatch λ‘ λμν©λλ€. κ·Έλμ μμ κ°λ₯..
- configurable widget
- Protocol
- RxCocoa
- rxswift
- SwiftUI
- async/await
- projectsetting
- WWDC22
- Objective-C
- IOS
- Algorithm
- containerBackground
- MOYA
- Notification
- Swift
- Firebase
- OpenSourceLibrary
- WWDC
- Widget
- WidgetKit
- CloneCoding
- YPImagePicker
- github
- μλ²ν΅μ
- UserDefaults
- APNS
- MVVM
- urlsession
- 2022 KAKAO TECH INTERNSHIP
- watchOS
| μΌ | μ | ν | μ | λͺ© | κΈ | ν |
|---|---|---|---|---|---|---|
| 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