๐ ์์ด-์ค-์์ค/๐ค ์ค์ํํธ
[Swift] strong, weak, unowned์ ๋น๋ฐ
[Swift] strong, weak, unowned์ ๋น๋ฐ
2022.01.23๋ํผ๋ฐ์ค ์นด์ดํธ ์๋
ํ์ธ์! ์ค๋์ swift์์ ๋ํผ๋ฐ์ค ์นด์ดํธ๋ฅผ ์ด๋ป๊ฒ ๊ตฌํํ๊ณ ์๋์ง ์์๋ณด๋ ค๊ณ ํฉ๋๋ค. ๋ง์ ๋ธ๋ก๊ทธ์์ weak๊ณผ unowned์ ์ฐจ์ด๋ฅผ Optional์ ๊ฐ๋ฅ ์ฌ๋ถ๋ผ๊ณ ๋งํ๊ณ ์๋๋ฐ, ์ฌ์ค ํ๋ฆฐ ํํ์ด์์. Swift 5.0๋ถํฐ๋ Unowned Optional์ด ์ถ๊ฐ๋์ด์ unowned๋ ์ต์
๋์ ๊ฐ์ง ์ ์์ต๋๋ค. ๊ทธ๋์ ๋ ๋ก์ฐ ๋ ๋ฒจ๋ก ๊ฐ๋ฉด ๋ํผ๋ฐ์ค ์นด์ดํ
๊ณผ ๋ฉ๋ชจ๋ฆฌ ํด์ ์ ์์ด์ ๋ถ๋ช
๋ค๋ฅธ ๋ถ๋ถ์ด ์์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๊ณ , GitHub - apple/swift: The Swift Programming Language The Swift Programming Language. Contribute to apple/swift development by creating an accoun..
[Swift-WWDC21] ARC in Swift: Basics and beyond
[Swift-WWDC21] ARC in Swift: Basics and beyond
2022.01.06ARC in Swift: Basics and beyond ์ค๋์ WWDC21 ์ธ์
์ค์์ ARC์ ๋ํ ์ธ์
์ด ์๊ธธ๋ ๋ฒ์ญ์ ํด๋ณด๋ฉด์ ARC๋ฅผ ๋ค์ ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํด์. ์ค์ญ์ด๋ ์์ญ์ด ์์ ์ ์์ผ๋ ์ด ํฌ์คํธ๊ฐ ์ ํ๊ณผ ์ค์ํํธํ์ ๊ณต์์ ์ธ ๋ฐํ๋ผ๊ณ ์๊ฐํ์ง ๋ง์๊ณ ๊ผญ ์๋ณธ ์์์ ๋ณด์๋ฉด์ ์์ด๊ฐ ์ด๋ ค์ฐ์ ๋ถ๋ถ์์ ์ฐธ๊ณ ๋ง ํด์ฃผ์๋ฉด ๋ ๊ฒ ๊ฐ์์! ๊ทธ๋ผ ์์ํ๊ฒ ์ต๋๋ค! ๊ทธ๋์ ๋ ์์ฆ์ ํค๋
ธํธ๋ฅผ ์์ฌ๋ ค์ฃผ๋๋ณด๋ค์ใ
ARC in Swift: Basics and beyond - WWDC21 - Videos - Apple Developer Learn about the basics of object lifetimes and ARC in Swift. Dive deep into what language features ..
[Swift] Method Dispatch ๋ฐํ์๋ฃ
[Swift] Method Dispatch ๋ฐํ์๋ฃ
2021.12.28Method Dispatch ์๋ฆฌ์ฆ์ ๋ฐํ์๋ฃ์
๋๋ค! ๊ธ๋ก ์ฝ์ผ์ค ๋ถ๋ค์ ์๋ ํฌ์คํธ๋ฅผ ์ฝ์ผ์๋ฉด ๋์ด์! [Swift] Method Dispatch (1): Static Dispatch vs. Dynamic Dispatch Method Dispatch ๊ธ์ ์์ํ๊ธฐ ์ ์, Method Dispatch๊ฐ ๋ฌด์์ธ์ง์ ๋ํด ์ ๋ฆฌํ ํ์๊ฐ ์๊ฒ ๋ค์. ๊ณต์์ ์ธ ๋ฌธ์๋ ์๋์ง๋ง ๊ตฌ๊ธ์ Method Dispatch์ ์ ์์ ๋ํด ๊ฒ์์ ํด๋ณด๋ฉด, ๐ก how a program selects wh.. jeonyeohun.tistory.com [Swift] Method Dispatch (2): ๋ ๋ณต์กํ ์ํฉ์ Method Dispatch ์ผ๋จ ์ ๋ฆฌ.. Static Dispatch, Dynamic Dispatch ์ง๋ ํฌ์ค..
[Swift] Method Dispatch (3): Dynamic Dispatch๋ฅผ ์ค์ฌ๋ณด์
[Swift] Method Dispatch (3): Dynamic Dispatch๋ฅผ ์ค์ฌ๋ณด์
2021.12.26Increasing Performance by Reducing Dynamic Dispatch - Swift Blog Get the latest news and helpful tips on the Swift programming language from the engineers who created it. developer.apple.com Dynamic Dispatch Dynamic Dispatch์ ์ฌ์ฉ์ด ๋ฌด์กฐ๊ฑด ๋์ ๊ฒ์ ์๋๋๋ค. Dynamic Dispatch ๋๋ถ์ ์ฐ๋ฆฌ๋ ์ค๋ฒ๋ผ์ด๋ฉ๋ ํ ์ ์๊ณ , ๋คํ์ฑ๋ ๋ง๋ค์ ์๊ณ ์์๋ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ ์ ์์ผ๋๊น์. ํ์ง๋ง ๋ฐ๋์ ํด๋์ค๋ฅผ ์ฌ์ฉํด์ผํ๋ ์ํฉ์์ ๋ ์ด์ ์์ํ ์์ ํด๋์ค๊ฐ ์๋ค๋ฉด ์ด๋จ๊น์? Dynamic Dispatch๋ ์ค์ ๊ตฌํ์ฝ๋..
[Swift] Method Dispatch (2): ๋ ๋ณต์กํ ์ํฉ์ Method Dispatch
[Swift] Method Dispatch (2): ๋ ๋ณต์กํ ์ํฉ์ Method Dispatch
2021.12.26์ผ๋จ ์ ๋ฆฌ.. Static Dispatch, Dynamic Dispatch ์ง๋ ํฌ์คํธ์์ Static Dispatch์ Dynamic Dispatch๋ฅผ ์ ๋ฆฌํด๋ณด์๋๋ฐ์, Static Dispatch๋ ์ธ์คํด์ค์์ ๋ฉ์๋๊ฐ ํธ์ถ๋ ๋ ์ค์ ๋ก ์ด๋ค ๋ฉ์๋๊ฐ ํธ์ถ๋ ์ง ์ปดํ์ผ ํ์์ ๊ฒฐ์ ํ ์ ์๋ ๊ฒฝ์ฐ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ Dynamic Dispatch๋ ๋ฐํ์์ vtable์ด๋ผ๋ ํ
์ด๋ธ์ ์ค์ ์คํํ ๋ฉ์๋์ ์ฃผ์๋ฅผ ์ฐพ์ ๊ฒฐ์ ํ๋ ๊ฒฝ์ฐ์์ต๋๋ค. ๋ฐํ์์ ํ
์ด๋ธ์ ๋ฃฉ์
ํด์ผํ๋ ์ค๋ฒํค๋ ๋๋ฌธ์ Dynamic Dispatch๋ ์ฑ๋ฅ์๋ ๋ถ์ ์ ์ธ ์ํฅ์ ์ค๋ค๋ ๊ฒ๋ ์ง์ด๋ดค์์ฃ . ํ์ง๋ง ์์๊ณผ ๋คํ์ฑ์ ์ฌ์ฉํ๊ธฐ ์ํด์๋ Dynamic Dispatch์ ์ฌ์ฉ์ด ํ์์ ์ด์์ต๋๋ค. ๊ฒฐ๊ตญ ์ง๋ ํฌ์คํธ์์๋ ๊ตฌ์กฐ์ฒด, ์ด๊ฑฐํ ๋ฑ,..
[Swift] Method Dispatch (1): Static Dispatch vs. Dynamic Dispatch
[Swift] Method Dispatch (1): Static Dispatch vs. Dynamic Dispatch
2021.12.26Method Dispatch ๊ธ์ ์์ํ๊ธฐ ์ ์, Method Dispatch๊ฐ ๋ฌด์์ธ์ง์ ๋ํด ์ ๋ฆฌํ ํ์๊ฐ ์๊ฒ ๋ค์. ๊ณต์์ ์ธ ๋ฌธ์๋ ์๋์ง๋ง ๊ตฌ๊ธ์ Method Dispatch์ ์ ์์ ๋ํด ๊ฒ์์ ํด๋ณด๋ฉด, ๐ก how a program selects which instructions to execute when invoking a method ์ด๋ ๊ฒ ํ ๋ฌธ์ฅ์ผ๋ก ๋ ์ ์๊ฐ ๊ฐ์ฅ ์๋จ์ ๋์ต๋๋ค. ํด์ํด๋ณด๋ฉด ์ด๋ค ๋ฉ์๋๊ฐ ํธ์ถ๋์์ ๋, ํ๋ก๊ทธ๋จ์ด ์ด๋ค ๋ช
๋ น์ด๋ฅผ ์คํํ ์ง ์ ํํ๋ ๋ฉ์ปค๋์ฆ์ด๋ผ๊ณ ํฉ๋๋ค. ๋ ์ฝ๊ฒ ์ด์ผ๊ธฐํด๋ณด๋ฉด ๋ฉ์๋๋ฅผ ์คํํ์ ๋ ์ค์ ๋ก ์ด๋ค ๋ฉ์๋๊ฐ ์คํ๋๋์ง ๊ฒฐ์ ํ๋ ๊ฒ์ด๋ผ๊ณ ๋ด๋ ๋๊ฒ ์ฃ ? Static Dispatch ๊ทธ๋ผ ์ด์ ๊ฐ๋จํ ์ํฉ์ ์๊ฐํด๋ด
์๋ค. struct Test { ..
[๋ฉด์ ์ง๋ฌธ] ์ค์ํํธ(Swift) 75๋ฌธ 75๋ต
[๋ฉด์ ์ง๋ฌธ] ์ค์ํํธ(Swift) 75๋ฌธ 75๋ต
2021.12.24์ค์ํํธ 100๋ฌธ 100๋ต์ ๋ชฉํ๋ก! ์๋ ์ ์ฅ์์ ๋ ๋นจ๋ฆฌ ์
๋ฐ์ดํธ๋ฉ๋๋ค! ์๋ชป๋ ๋ต๋ณ์ด ์๋ค๋ฉด ์๋ ค์ฃผ์๊ณ , ๋ ๊ณต๋ถํ ๊ฑฐ๋ฆฌ๊ฐ ์๋ค๋ฉด 100๊ฐ์ ์ง๋ฌธ์ ์ฑ์ฐ๊ธฐ ์ํด ๋๊ธ์ด๋ PR๋ก ์๋ ค์ฃผ์ธ์! GitHub - jeonyeohun/Getting-Ready-For-Interview: ๐ฅท ๊ธฐ์ ๋ฉด์ ์ ์ค๋นํ๋ ์ ์ฅ์: ์ด์์ฒด์ , ๋คํธ์ํฌ, ๋ฐ์ด ๐ฅท ๊ธฐ์ ๋ฉด์ ์ ์ค๋นํ๋ ์ ์ฅ์: ์ด์์ฒด์ , ๋คํธ์ํฌ, ๋ฐ์ดํฐ๋ฒ ์ด์ค, ์๋ฃ๊ตฌ์กฐ, iOS์ Swift๋ฅผ ๋ค๋ฃน๋๋ค. - GitHub - jeonyeohun/Getting-Ready-For-Interview: ๐ฅท ๊ธฐ์ ๋ฉด์ ์ ์ค๋นํ๋ ์ ์ฅ์: ์ด์์ฒด์ , ๋คํธ์ github.com 1. ์ค์ํํธ์์ Extension์ ์ด๋ป๊ฒ ์ฌ์ฉ๋๋์? (What are Extensions use..
[Swift] GCD(Grand Central Dispatch) - Dispatch Queue
[Swift] GCD(Grand Central Dispatch) - Dispatch Queue
2021.10.25GCD(Grand Central Dispatch)๋ Dispatch Queue๋ ๊ฐ์๊ฑฐ์ผ? ์ด ํฌ์คํธ๋ฅผ ์ค๋นํ๋ฉด์ "์ฐ๋ฆฌ๋ ์ Dispatch Queue๋ฅผ GCD๋ผ๊ณ ํ ๊น?"๋ผ๋ ์๋ฌธ์ด ๋จผ์ ๋ค์์ต๋๋ค. ๊ทธ๋์ ๊ณต์๋ฌธ์๋ฅผ ์ฐพ์๋ณด๋ GCD์ Dispatch Queue๋ ๋ด์ฉ์ด ๋ค๋ฅด๋๋ผ๊ตฌ์. ๋จผ์ ์ด ๋ถ๋ถ๋ถํฐ ์ ๋ฆฌํ๊ณ Dispatch Queue์ ๋ํด ์ ๋ฆฌํด๋ณด๊ฒ ์ต๋๋ค. ๐กDispatch, also known as Grand Central Dispatch (GCD), contains language features, runtime libraries, and system enhancements that provide systemic, comprehensive improvements to the support f..
[Swift] ์ค์ํํธ์ ๊ณ ์ฐจํจ์๋ค(High Order Functions)
[Swift] ์ค์ํํธ์ ๊ณ ์ฐจํจ์๋ค(High Order Functions)
2021.10.10๊ณ ์ฐจ ํจ์ (High Order Function) ๊ณ ์ฐจํจ์๋ ๋ค๋ฅธ ํจ์๋ฅผ ์ธ์๋ก ๋ฐ๊ฑฐ๋, ํจ์์ ๊ฒฐ๊ณผ๋ก ํจ์๋ฅผ ๋ฐํํ๋ ํจ์๋ฅผ ์๋ฏธํฉ๋๋ค. ์ค์ํํธ์์๋ map, filter, reduce ๊ฐ ์ฝ๋ ์
ํ์
๋ด์ ์ ์๋์ด ์์ต๋๋ค. ์ง์ง ์์ฃผ์ฐ๋ ๊ณ ์ฐจํจ์๋ค(map, filter, reduce) map map ์ ์ฝ๋ ์
๋ด๋ถ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ณตํ์ฌ ์๋ก์ด ์ฝ๋ ์
์ ์์ฑํฉ๋๋ค. let numbers = [1, 2, 3, 4, 5] let numbersPlusOne = numbers.map({ $0 + 1 }) map ๋ฉ์๋๋ ์ธ์๋ก ํด๋ก์ ๋ฅผ ๋ฐ์ ์ปจํ
์ด๋ ๋ด๋ถ์ ๋ค์ด์๋ ์์๋ค์ ๊ฐ์ ์ด๋ป๊ฒ ๋ฐ๊ฟ ๊ฒ์ธ์ง ๊ฒฐ์ ํฉ๋๋ค. filter filter ๋ ์ฝ๋ ์
๋ด๋ถ์์ ์กฐ๊ฑด์ ๋ง๋ ๋ฐ์ดํฐ๋ค๋ง ๊ณจ๋ผ ์๋ก์ด ์ฝ๋ ์
์ ์์ฑํฉ๋..
[Swift] Swift์ ์ฐ์ฒด๊ตญ, NotificationCenter
[Swift] Swift์ ์ฐ์ฒด๊ตญ, NotificationCenter
2021.09.19NotificationCenter ์ต์ ๋ฒ ํจํด? ๋ฐํ-๊ตฌ๋
ํจํด? ์ด์ ํฌ์คํธ์์ ์ต์ ๋ฒ ํจํด๊ณผ ํ์ญํจํด์ผ๋ก ๋ถ๋ฆฌ๋ ๋ฐํ-๊ตฌ๋
ํจํด์ ์ ๋ฆฌํ ์ ์ด ์์์ต๋๋ค. ๋ ํจํด์ ๋ํ ์ดํด๊ฐ ์์ผ๋ฉด ํจ์ฌ ๋ ์ฌ๋ฏธ์์ผ๋ ๋ ํฌ์คํธ๋ฅผ ๋จผ์ ์ฐธ๊ณ ํด์ฃผ์ธ์! [์ต์ ๋ฒํจํด][ํ์ญํจํด] ์ค์ํํธ์ NotificationCenter๋ ๋ฐํ-๊ตฌ๋
ํจํด๊ณผ ์ ์ฌํ๊ฒ ๋์ํฉ๋๋ค. ๋ฐํ-๊ตฌ๋
ํจํด์์ ์ด๋ฒคํธ ๋ธ๋ก์ปค์ ํด๋นํ๋ ์ค๊ฐ์์ ์ญํ ์ NotificationCenter ๊ฐ์ฒด๊ฐ ํ๊ฒ๋์ฃ . NotificationCenter๋ผ๋ ์ด๋ฆ์ฒ๋ผ ์์ ์๊ฒ ๋ฑ๋ก๋ ์น๊ตฌ๋ค์๊ฒ ์๋ฆผ์ ๋ณด๋ด์ฃผ๋ ๊ฐ์ฒด๊ฐ NotificationCenter์
๋๋ค! ์ฉ์ด ์ ๋ฆฌ ๋จผ์ NotificationCenter์์ ์ฌ์ฉํ๋ ์ฉ์ด๋ถํฐ ์ ๋ฆฌํ๊ฒ ์ต๋๋ค. Notification..
[Swift] Struct vs. Class (2), Struct์์ ์ฐธ์กฐ ํ์
, Class ์์ ๊ฐ ํ์
๋ณ์๊ฐ ์์ ๋
[Swift] Struct vs. Class (2), Struct์์ ์ฐธ์กฐ ํ์ , Class ์์ ๊ฐ ํ์ ๋ณ์๊ฐ ์์ ๋
2021.08.26๊ตฌ์กฐ์ฒด๋ ๊ฐ ํ์
, ํด๋์ค๋ ์ฐธ์กฐ ํ์
! ์ด์ ํฌ์คํธ์์ ๊ตฌ์กฐ์ฒด๋ ๊ฐ ํ์
, ํด๋์ค๋ ์ฐธ์กฐ ํ์
์ด๋ผ๋ ๊ฒ์ ๊ณต๋ถํ์ต๋๋ค. ๊ทธ๋ฐ๋ฐ ๋ง์ฝ ๊ตฌ์กฐ์ฒด ์์ ํด๋์ค์ ์ธ์คํด์ค๊ฐ ์๋ ๊ฒฝ์ฐ, ๊ทธ๋ฆฌ๊ณ ํด๋์ค ์์ ๊ตฌ์กฐ์ฒด ์ธ์คํด์ค๊ฐ ์๋ ๊ฒฝ์ฐ๋ ์ด๋จ๊น์? ํด๋์ค ์์ ๊ตฌ์กฐ์ฒด์ ์ธ์คํด์ค๊ฐ ์๋ ๊ฒฝ์ฐ ์ฝ๋๋ก ์์ฑํด์ ํ์ธํด๋ด
์๋ค. import Foundation struct ValueType { var number = 2 } class ReferenceType { var number = 1 var structInstance = ValueType() } let classInstance = ReferenceType() let classInstanceCopy = classInstance classInstanceCopy.numbe..
[Swift] Struct vs. Class (1), ์ธ์ ๋ญ ์จ์ผํ ๊น?
[Swift] Struct vs. Class (1), ์ธ์ ๋ญ ์จ์ผํ ๊น?
2021.08.25๊ตฌ์กฐ์ฒด๋ ํด๋์ค๋.. ๊ณ ๊ฒ์ด ๋ฌธ์ ๋ก๋ค.. ์๋ก์ด ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ ์ํ๊ฑฐ๋ ํ์
์ ๋ง๋ค ๋, ๊ตฌ์กฐ์ฒด์ ํด๋์ค ์ค ์ด๋ค ๊ฒ์ ์ฌ์ฉํ ์ง ๊ณ ๋ฏผํ๊ณค ํฉ๋๋ค. ์ค๋์ ๊ตฌ์กฐ์ฒด์ ํด๋์ค์ ์ฐจ์ด์ ๋ํด์ ์์๋ณด๊ณ ์ด๋ค ์ํฉ์ ์ด๋ค ๋ฐฉ์์ ์ ํํ๋ฉด ์ข์์ง ๊ณ ๋ฏผํด๋ณด๊ฒ ์ต๋๋ค. ๊ฐ ํ์
vs. ์ฐธ์กฐ ํ์
๊ตฌ์กฐ์ฒด์ ํด๋์ค์ ์ฐจ์ด ์ค ๊ฐ์ฅ ๋๋๋ฌ์ง๋ ๊ฒ์ ๊ตฌ์กฐ์ฒด๋ ๊ฐ ํ์
, ํด๋์ค๋ ์ฐธ์กฐ ํ์
์ด๋ผ๋ ๊ฒ์
๋๋ค. ๋ฐ๋ผ์ ๊ตฌ์กฐ์ฒด์ ์ธ์คํด์ค๋ ๋ณ์์ ๋์
๋๊ฑฐ๋ ๋ค๋ฅธ ํจ์๋ก ์ ๋ฌ๋ ๋, ๋ฉค๋ฒ๋ค์ ๊ฐ์ด ๊ทธ๋๋ก ๋ณต์ฌ๋ ์๋ก์ด ์ธ์คํด์ค๊ฐ ์์ฑ๋๊ณ , ํด๋์ค๋ ํ์ฌ ์ธ์คํด์ค์ ์ฐธ์กฐ ๊ฐ์ด ์ ๋ฌ๋ฉ๋๋ค. ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ ๊ตฌ์กฐ์ฒด๋ ๊ฐ ํ์
, ํด๋์ค๋ ์ฐธ์กฐ ํ์
์ด๋ผ๋ ๋ง์ ๊ณง ๋ ํ์
์ด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋ก ๋ค๋ฅด๊ฒ ์ฌ์ฉํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ๊ตฌ์กฐ์ฒด - ์คํ ์์ญ ๊ตฌ..