์ด๋ฏธ์ง ๋ ๋๋? ๊ฑฐ์ ๋ชจ๋ ์ดํ๋ฆฌ์ผ์ด์
์์ ์ด๋ฏธ์ง๋ฅผ ํ์ํฉ๋๋ค. ์ฌ์ค์ ์ด๋ฏธ์ง๊ฐ ์๋ ์ฑ์ ์๋ค๊ณ ๋ณผ ์ ์์ฃ . ๊ทธ๋ฆฌ๊ณ ์์ด์ฝ, ๋ก๊ณ ๋ฑ์ ์ ์ธํ ์ด๋ฏธ์ง๋ ์๊ฒฉ ์๋ฒ์์ ๊ฐ์ ธ์ค๋ ๊ฒฝ์ฐ๊ฐ ๋๋ถ๋ถ์
๋๋ค. ์ด๋ฏธ์ง๊ฐ ์๊ฒฉ ์๋ฒ์ ์๋ค๋ ์๋ฏธ๋ ์ด๋ค ์๋ฏธ์ผ๊น์? ๊ฒฐ๊ตญ ๊ทธ ์ญ์ ๋คํธ์ํฌ ์์ฒญ์ด๊ธฐ ๋๋ฌธ์ ์ผ์ ์๊ฐ์ด ์์๋๊ณ ๋น์ฉ์ด ๋ ๋ค๋ ์ด์ผ๊ธฐ์
๋๋ค. ์๊ฐ๊ณผ ๋น์ฉ์ด ๋๋ ์์
์ด๊ธฐ ๋๋ฌธ์ ์ฐ๋ฆฌ๋ ์์ฒญ ํ์๋ฅผ ์ต์ํํ๊ฑฐ๋, ์ ์ ํ ํ์ด๋ฐ์ ์์ฒญ์ ํด์ผ ํฉ๋๋ค. ์ด๋ฏธ์ง ์์ฒญ ์ทจ์(Cancel) ์์
์ ํ์์ฑ ๊ทธ๋ฆฌ๊ณ ์ด๋ฏธ์ง ์์ฒญ์ ๊ฒฝ์ฐ ์๊ฐ์ด ๊ฑธ๋ฆฌ๋ ๋น๋๊ธฐ ์์
์ด๊ธฐ ๋๋ฌธ์ ์ ํ๋ฆฌ์ผ์ด์
๋ด์์ ๊ฒฝ์ ์กฐ๊ฑด์ด ๋ฐ์ํ ์ ์์ต๋๋ค. ์ด๋ค ์์ฒญ ์์
์ด ๋จผ์ ๋๋ ์ง ์์ธกํ๊ธฐ๋ ์ด๋ ต์ฃ . ํ
์ด๋ธ ๋ทฐ๋ ์ปฌ๋ ์
๋ทฐ ์ฒ๋ผ ๋ง์ ์
์ ๊ฐ์ง ..
๐ iOS & Swift
๋ฌธ์ ๋น๋ง์ดํ๋ 1.4.3 ๋ฒ์ ์ ๋ฉ์ธ ํ๋ฉด์์ ์คํฌ๋กค ์ ๋๊น ํ์์ด ๋ฐ์ํฉ๋๋ค. 1. ์ฝ๋์ ๋ฌธ์ ์ผ ๊ฒ์ด๋ค. 2. ๋ ๋๋ง ๋ฌธ์ ์ผ ๊ฒ์ด๋ค. iOS ์ดํ๋ฆฌ์ผ์ด์
์ UI ๋ ๋๋ง ๊ณผ์ ์ ๋ํด์ ์์๋ณด๊ธฐ๋ก ํ์ต๋๋ค. Render Loop, Hitch ๋ฑ๋ฑ์ ํค์๋๊ฐ ๋์ค๋๊ตฐ์. ํค์๋์ ๋ํด์ ์์๋ณด๋ ์ค ๊ด๋ จ ์๋ ๊ฒ ๊ฐ์ WWDC ์ธ์
์ด ๋ช ๊ฐ ๋์์ต๋๋ค. ์ฐ์ ์์๋ถํฐ ๋ณด๊ธฐ๋ก ํ์ต๋๋ค. ๋ค์ ์์์ ์ฐพ์๋ณด๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค: Explore UI animation hitches and the render loop Demystify and eliminate hitches in the render phase Find and fix hitches in the commit phase ์์์ ์ฐพ์๋ณด๋ฉด ์๊ฒ ์ง๋ง ์ฐ..
๋ค์ด๊ฐ๋ฉฐ https://apps.apple.com/kr/app/%EB%B9%84%EB%A7%88%EC%9D%B4%ED%94%8C%EB%9E%9C-%EC%97%AC%ED%96%89-%EC%BD%94%EC%8A%A4-%EC%8A%A4%ED%86%A0%EC%96%B4/id1627682568 (๐ ์ฑ ์คํ ์ด ๋งํฌ) ๋น๋ง์ดํ๋ - ์ฌํ ์ฝ์ค ์คํ ์ด ์ฌํ ์ฝ์ค ์คํ ์ด, ๋น๋ง์ดํ๋ ํ์ง์ธ ํฌ๋ฆฌ์์ดํฐ๋ค์ด ๋ง๋ ๋ค์ํ ์ปจ์
์ ์ฌํ ์ฝ์ค ์ฝํ
์ธ ๋ก ์ฌํ ๊ณํ ์๊ฐ์ ํ ์ค์ฌ๋ณด์ธ์! ํฌ๋ฆฌ์์ดํฐ๊ฐ ์์ ํ ์ฅ์๋ค์ ํจ์จ์ ์ธ ๋ฃจํธ๋ก ๊ตฌ์ฑํ์ฌ ์ผ apps.apple.com ๋๋ ํ์ฌ ์ฌํ ์ฝ์ค ์คํ ์ด ๋น๋ง์ดํ๋์ ์ ์ง, ๋ณด์, ์ ๊ท ๊ธฐ๋ฅ ๊ฐ๋ฐ์ ๋งก๊ณ ์๋ค. . ๊ทธ๋์ ํ์ ํฉ๋ฅํ๊ณ ํฌ๊ณ ์์ 5-6์ฐจ๋ก์ ์
๋ฐ์ดํธ๋ฅผ ํด์๋๋ฐ, ์งง..
Stored Property vs Computed Property vs Method ์ต๊ทผ์ ๊ธฐ์ด๊ฐ ๋ถ์กฑํ๋ค๋ ๊ฒ์ ๋๊ปด ํํํ ํ์์ ๊ถ๊ธํ๋ ๊ฒ์ด๋ ๋ฌธ๋ฒ๋ค์ ๋ค์ ๋ณด๊ณ ์๋๋ฐ ์๊ฐ๋ณด๋ค ์ฌ๋ฐ๋ค.. (์, ์ผ๋จ ์์ ์ ์์ฌ..!!) ์ฐ์ฐ ํ๋กํผํฐ๋ฅผ ์ธ์ ์ฐ๋ ๊ฒ์ด ์ข์์ง ๊ณ ๋ฏผ์ ํ๋ค๊ฐ ๊ด์ฐฎ๋ค๊ณ ๋๋ ๊ด์ ์ ๊ธ์ด ์์ด์ ๋ฉ๋ชจํด๋๋๋ค. ์ ์ฅ ํ๋กํผํฐ(Stored Property) - ๊ฐ์ ๋ณํ๊ฐ ์๊ณ , ์ ๊ธฐ์ ์ผ๋ก ์ ๊ทผ(Read)ํด์ ์ฐ๋ ค๊ณ ํ ๋ - ๋ง๋ค์ด๋๊ณ ๊ฑฐ์ ์ฝ์ง ์๊ฒ๋๋ ์ ์ฅ ํ๋กํผํฐ์ธ ๊ฒฝ์ฐ lazy ํค์๋๋ฅผ ์ฌ์ฉํด์ ์ฑ๋ฅ์ ๊ฐ์ ํด๋ณผ ์ ์์ ๊ฒ ๊ฐ๋ค. - ๋ง์ฐฌ๊ฐ์ง๋ก Property Observer๋ฅผ ํตํด์๋ ์ฑ๋ฅ์ ๊ฐ์ ํด๋ณผ ์ ์์ง ์์๊น? (- ์ ๋ถ๋ถ์ ์ด์ง ์๋ฟ์ง ์๋๋ค.) ์ฐ์ฐ ํ๋กํผํฐ(Co..
์์ฆ ๊ณต๋ถ์ ์ด๋ ์ ๋ ์๊ฐ์ ๋คํธ์ํฌ ํต์ ๋ถ๋ถ์ ๋ํ ํ์ต, ๋คํธ์ํฌ ๋ ์ด์ด ์ถ์ํ์ ๋ํ ๊ฒ์ ์ฐ๊ตฌํด๋ณด๊ณ ์๋ค. ๊ทธ๋ฆฌ๊ณ ๋๋ง์ ๋คํธ์ํฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ํ ๊ธฐ์ค๋ ๊ณ ๋ฏผํด๋ณด๋ ์ค ๋คํธ์ํฌ ํต์ ์ ์ ๋ง ์์ฒญ(Request)๊ณผ ์๋ต(Response)์ด ๋ค๋ผ๋ ๊ฒ์ ์์ฆ ๋ ๊ฐํ๊ฒ ๋๋๋ค. ์ค์ค๋ก ์ ๋ฆฌ๊ฐ ์ผ์ถ ๋๋ฉด, ๋คํธ์ํฌ ํต์ ์ ๋ํด์ ๋ด ๋๋ฆ๋๋ก ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํ๋ค. ์์(๋ฆฌ์์ค)์ด ์๋ ์๋ฒ ์ชฝ์ ์์ฒญํ ์์ฒญ์๋ฅผ ๋ง๋ค๊ณ , ๊ฐ์ ธ์จ ์์์ ์ฑ์ ์ํฉ์ ๋ง๊ฒ ์ ์ ํ ํด๋
ํ๊ณ ๊ฐ๊ณตํด์ ์ฐ๋ ๊ฒ ์ด๊ฒ์ด ๋ค๋ผ๊ณ ์๊ฐํ๋ค. ์์ฒญ์ ํตํด ์์์ ์์ฑํ๋ ๊ฒฝ์ฐ๋ ์์ง๋ง ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ฐ๋ ํด๋ผ์ด์ธํธ์ ์
์ฅ์์๋ ์์ฒญ์ด ํนํ๋ ์ค์ํ๋ค๊ณ ๋ณธ๋ค. ์์ฒญ์์ ํ์ํ ์ ๋ณด๋ ํฌ๊ฒ ๋ค์๊ณผ ๊ฐ๋ค. URL(Path, Qu..
๋ค์ด๊ฐ๋ฉฐ ๊ธฐ๋ก์ ์์คํจ์ ์๋ฉด์๋ ๋ฌด์ธ๊ฐ๋ฅผ ๊พธ์คํ ๊ธฐ๋กํ๋ค๋ ๊ฒ์ ์ฐธ ์ด๋ ค์ด ๊ฒ ๊ฐ์ต๋๋ค. ์ด๋ฐ์ ๋ฐ ์๊ฐ์ ๋ง์ด ํ์ง๋ง ๊ทธ๋ฅ ํ๊ณ๋์ง๋ง๊ณ , ๋ช ์๋ผ๋ ๋จ๊ฒจ๋๋ ๊ฒ์ด ์ค์ํ๋ค๋ ๊ฒฐ๋ก ์ ๋ด๋ ธ์ต๋๋ค. ๊น์ด ์๋ ๊ธ์ ๋ฌ์ 1~2๋ฒ ์ ๋ ์ ๋ ๊ฒ์ผ๋ก ํ๊ณ ์ฐ์ ์ ๊พธ์คํ ๋ฉ๋ชจ(ex. ํค์๋, ์์ฝ ๋ฑ)๋ฅผ ํ๋ ์์ผ๋ก ๊ฐ๋ณด๋ ค๊ณ ํด์. ๊นํ๋ธ์ ๊ธฐ๋กํ๋ ๊ฒ์ด ํธํด์ ๋ณดํต ๋ฉ๋ชจ๋ ๊ธฐ๋ก์ ๊นํ๋ธ์ ํ๋ ํธ์ด์ง๋ง, ์์ผ๋ก ๋ธ๋ก๊ทธ์๋ ๋์์ ๊พธ์คํ ํฌ์คํ
ํ ์๊ฐ์
๋๋ค. ํ์ดํ
!! Disposable RxSwift > Disposable // Disposable.swift /// Represents a disposable resource. public protocol Disposable { /// Dispose resourc..
์ต๊ทผ์ ์๋์ ๊ฐ์ ๋ฉ์์ง๊ฐ ์ฝ์ ์ฐฝ์ ๋จ๋ฉด์ ๋น๋๊ฐ ์๋์ง ์๋ ๋ฌธ์ ๋ฅผ ๊ฒช์๋ค. warning: libobjc.A.dylib is being read from process memory. This indicates that LLDB could not find the on-disk shared cache for this device. This will likely reduce debugging performance. rm -r ~/Library/Developer/Xcode/iOS\ DeviceSupport ๋ค์ ๋๋ ํฐ๋ฆฌ๋ฅผ ์ญ์ ํ๊ณ ๋ค์ ๋น๋ํ๋ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์๋ค. ๋ ํผ๋ฐ์ค https://stackoverflow.com/questions/72598348/xcode-14-beta-build-issues-wi..
๋ฉ์๋ ์ ์ func compare(_ other: Date) -> ComparisonResult ๋ค๋ฅธ ๋ ์ง์ ๋น๊ตํด์ฃผ๋ ์ธ์คํด์ค ๋ฉ์๋ ์ฌ์ฉ ์์ import Foundation // Date String let targetDateString = "2022-08-10" let comparisonDateString = "2022-12-08" let dateFormatter = DateFormatter() dateFormatter.dateFormat = "yyyy-MM-dd" // Optional Binding guard let pastDate = dateFormatter.date(from: targetDateString), let futureDate = dateFormatter.date(from: com..