iOS) COW(Copy-on-Write)

OptimizationTips λ¬Έμ„œμ—μ„œ Value Type(κ°’ νƒ€μž…)은 COW(Copy-on-Write) μ΅œμ ν™”λ₯Ό μ‚¬μš©ν•œλ‹€κ³  ν•©λ‹ˆλ‹€. COW 에 λŒ€ν•΄μ„œ μ•Œμ•„λ³΄κΈ° 전에 νƒ€μž…μ— λ”°λΌμ„œ μ–΄λ– ν•œ μ‹μœΌλ‘œ λ³΅μ‚¬ν•˜λŠ”μ§€ μ•Œμ•„λ΄…μ‹œλ‹€. βœ… Swift μ—μ„œ κ°’ νƒ€μž…κ³Ό μ°Έμ‘° νƒ€μž…μ˜ 볡사 방식은 λ‹€λ¦…λ‹ˆλ‹€. κ°’ νƒ€μž… : κΉŠμ€ 볡사(deep copy). 데이터 자체λ₯Ό λ³΅μ‚¬ν•˜λŠ” 방법. 독립적인 λ©”λͺ¨λ¦¬λ₯Ό μ°¨μ§€ν•˜κΈ° λ•Œλ¬Έμ— λ³΅μ‚¬ν•œ μΈμŠ€ν„΄μŠ€μ˜ 데이터λ₯Ό 바꾸더라도 원본에 영ν–₯을 μ£Όμ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ°Έμ‘° νƒ€μž… : 얕은 볡사(shallow copy). μ΅œμ†Œν•œμ˜ λ³΅μ‚¬λ§Œ μ§„ν–‰. 볡사λ₯Ό ν•  λ•Œ μ£Όμ†Œκ°’μ„ κ³΅μœ ν•œλ‹€. 원본과 볡사본이 같은 μ£Όμ†Œκ°’μ„ κ³΅μœ ν•˜λ―€λ‘œ ν•œ μͺ½μ˜ 데이터λ₯Ό λ°”κΎΈλ©΄ λ‹€λ₯Έμͺ½μ— 영ν–₯을 μ€λ‹ˆλ‹€. κ°’ νƒ€μž…μ€ μˆ˜μ •ν•˜μ§€ μ•Šμ•„λ„ 맀번 데이터λ₯Ό 볡사할 λ•Œ..

iOS 2022. 8. 25. 00:01
iOS) DispatchQueueμ—μ„œ [weak self] λ₯Ό μ‚¬μš©ν•΄μ•Όλ§Œ ν•˜λ‚˜μš”?

μ’€ 더 근본적인 μ§ˆλ¬Έμ„ 던져보자. βœ… DispatchQueue μ—μ„œ strong reference cycle(κ°•ν•œ μ°Έμ‘° μˆœν™˜) 은 λ°œμƒν•  수 μžˆλŠ”κ°€? λΌλŠ” μ§ˆλ¬Έμ— λŒ€ν•΄μ„œ κ²°λ‘ μ μœΌλ‘œλŠ” λ³€μˆ˜λ‘œ μ €μž₯ν•˜μ§€ μ•ŠμœΌλ©΄ κ°•ν•œ μ°Έμ‘° μˆœν™˜μ΄ λ°œμƒν•˜μ§€ μ•ŠλŠ”λ‹€. 즉, DispatchQueue λ₯Ό μ΄λ‹ˆμ…œλΌμ΄μ €λ₯Ό 톡해 λ§Œλ“€μ–΄μ„œ λ³€μˆ˜μ— μ €μž₯ν•˜μ§€ μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” 이상 κ°•ν•œ μ°Έμ‘° μˆœν™˜μ€ λ°œμƒν•˜μ§€ μ•ŠλŠ”λ‹€. DispatchQueue 의 main κ³Ό global 은 각각 νƒ€μž… ν”„λ‘œνΌν‹°μ™€ νƒ€μž… λ©”μ†Œλ“œμ΄κΈ° λ•Œλ¬Έμ— ν˜ΈμΆœν•˜λŠ” μΈμŠ€ν„΄μŠ€κ°€ 레퍼런슀 카운트λ₯Ό μ˜¬λ¦¬μ§€ μ•Šκ³ , κ°•ν•œ μ°Έμ‘° μˆœν™˜μ—μ„œ 자유둜울 수 μžˆλ‹€. βœ… [weak self] λ₯Ό μ‚¬μš©ν•˜μ§€ μ•Šμ•„λ„ 될까? κ·Έλ ‡λ‹€λ©΄ [weak self] 와 같은 캑처리슀트λ₯Ό μ‚¬μš©ν•˜μ§€ μ•Šμ•„λ„ 될까? κ·ΈλŸΌμ—λ„ λΆˆκ΅¬ν•˜κ³ ..

iOS 2022. 8. 24. 00:01
μ˜€λŠ˜λ„ κ°œλ°œμžκ°€ μ•ˆ λœλ‹€κ³  λ§ν–ˆλ‹€(2)

이 글은 ‘μ˜€λŠ˜λ„ κ°œλ°œμžκ°€ μ•ˆ λœλ‹€κ³  λ§ν–ˆλ‹€’ 책을 읽고 λ‚΄μš©κ³Ό λŠλ‚€ 점을 μ •λ¦¬ν•œ κ²ƒμž…λ‹ˆλ‹€. πŸ‘‰ 상황에 λ§žλŠ” 이미지 ν˜•μ‹ 이미지 포맷은 λΉ„νŠΈλ§΅κ³Ό 벑터 λ°©μ‹μœΌλ‘œ λ‚˜λ‰œλ‹€. λΉ„νŠΈλ§΅ μ΄λ―Έμ§€λŠ” μž‘μ€ 픽세듀이 λͺ¨μ—¬ ν•˜λ‚˜μ˜ 이미지λ₯Ό λ§Œλ“œλŠ” ν˜•νƒœ. ν™•λŒ€ν•˜λ©΄ κΉ¨μ Έλ³΄μ΄λŠ” νŠΉμ§•. 벑터 μ΄λ―Έμ§€λŠ” 점과 μ„ μœΌλ‘œ 이루어진 이미지. ν™•λŒ€ν•΄λ„ κΉ¨μ§€μ§€ μ•ŠλŠ” νŠΉμ§•. λŒ€ν‘œμ μœΌλ‘œ JPEG, PNG, GIF, SVG 이미지 포맷이 μžˆλ‹€. μ•Œμ•„λ³΄μž. 1) JPG(JPEG) 손싀 μ••μΆ• 포맷으둜 μ••μΆ•ν•  경우 μ΄λ―Έμ§€μ˜ ν’ˆμ§ˆμ΄ λ–¨μ–΄μ§€μ§€λ§Œ, μš©λŸ‰μ„ 많이 쀄일 수 μžˆλ‹€. κ·Έλ¦Ό, 사진 λ“± μ›Ήμ—μ„œ 주둜 μ‚¬μš©ν•˜λ©° λΉ„νŠΈλ§΅ 방식이닀. 2) GIF PNG κ°€ λ‚˜νƒ€λ‚˜κΈ° 전에 개발된 무손싀 μ••μΆ• 포맷이닀. μ• λ‹ˆλ©”μ΄μ…˜μ„ μ§€μ›ν•œλ‹€. 색상을 256κ°€μ§€λ§Œ μ§€μ›ν•˜κΈ° λ•Œλ¬Έμ— λ‹€λ₯Έ..

Objective-C) μ„œλΈŒν΄λž˜μ‹±μ„ κ³ λ €ν•  λ•Œ

예λ₯Ό λ“€μ–΄ λ§Žμ€ 객체듀이 ν•΄λ‹Ή 클래슀λ₯Ό μƒμ†λ°›μ•„μ„œ 같은 λ·°λ₯Ό κ°€μ Έμ•Ό ν•œλ‹€λ©΄ μ„œλΈŒν΄λž˜μ‹±μ„ ν•˜λŠ” 것이 μœ μš©ν•˜λ‹€. 이λ₯Ό 톡해 μž¬μ‚¬μš©μ„±μ΄ μ’‹μ•„μ§„λ‹€. κ·Έλ ‡λ‹€λ©΄ 무쑰건 μ„œλΈŒν΄λž˜μ‹±μ„ ν•˜λŠ” 것이 μ’‹μ„κΉŒ? κ³ λ €ν•  사항에 λŒ€ν•΄μ„œ μƒκ°ν•΄λ³΄μž. κ³ λ €ν•  사항 μ„œλΈŒν΄λž˜μ‹±μ„ ν•˜λ‹€λ³΄λ©΄ λ³΅μž‘ν•˜κ³  κΉŠμ€ ν΄λž˜μŠ€λ“€μ˜ 상속관계λ₯Ό λ§Œλ“€κ²Œ λ©λ‹ˆλ‹€. μ΄λ•Œ μ„œλΈŒν΄λž˜μ‹±μ„ ν•˜λŠ” λͺ©μ μ΄ μΈν„°νŽ˜μ΄μŠ€λ§Œ κ³΅μœ ν•˜λŠ” 것이라면 ν”„λ‘œν† μ½œμ„ μ‚¬μš©ν•˜λŠ” 것이 λ°”λžŒμ§ν•  수 μžˆλ‹€. λ˜ν•œ, 많이 λ³€κ²½λ˜κ±°λ‚˜ λ§Žμ€ κ΅¬ν˜„μ‚¬ν•­μ„ λ‹€λ₯Έ ν΄λž˜μŠ€μ— μœ„μž„ν•˜κ²Œ λœλ‹€λ©΄(예λ₯Ό λ“€μ–΄, UITableViewDelegate 와 같은 delegate) 델리게이트λ₯Ό μ‚¬μš©ν•˜λŠ” 것이 훨씬 동적인 클래슀λ₯Ό λ§Œλ“€κΈ° μœ μš©ν•˜λ‹€. 클래슀λ₯Ό ν™•μž₯ν•˜κΈ° μœ„ν•œ κΈ°λŠ₯으둜써 μΉ΄ν…Œκ³ λ¦¬λ„ 쒋은 방법이닀. μΉ΄ν…Œκ³ λ¦¬λ₯Ό 톡해 ν™•μž₯된 클..

Objective-C 2022. 8. 18. 19:43
μ΅œκ·Όμ— 올라온 κΈ€
μ΅œκ·Όμ— 달린 λŒ“κΈ€
κΈ€ 보관함
Β«   2025/11   Β»
일 μ›” ν™” 수 λͺ© 금 ν† 
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