ios
-
Crash ๊ฐ์งํ๊ณ ๋ค๋ฃจ๊ธฐiOS 2025. 3. 29. 09:16
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ ๋ญ๊ฐ ๊ฐ๋ ์ ์ผ๋ก ๊ฐ์กํ ์ ๋ณด ์ ๋ฌ์ ๋ชฉ์ ๋ณด๋ค ์ ๊ฐ ์ฝ์งํ๋ฉด์ ๊ทธ๋ฅ ์ฝ๋๋ก ๋ํ๋ด๋ณธ ๋ด์ฉ์ ์ ๋ฌํด๋ณผ๊นํด์! ์ฃผ์ ๋, iOS App Crash๋ฅผ ๊ฐ์งํ๊ณ ์ด๋ฅผ ๋ค๋ฃจ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ด๋ผ๊ณ ๋ณผ ์ ์์ต๋๋ค.์์ ๋งํ๋ฏ์ด ์ฝ์ง ์ฝ๋๋ผ์ ๋ถ์กฑํ ๋ถ๋ถ์ด ์์์๋ ์๊ณ ๋ ผ๋ฆฌ์ ์ผ๋ก ์๋ง๋ ๋ถ๋ถ๋ ์์ ์ ์์ง๋ง ๊ทธ๋๋ ์ฃผ์ ์์ฒด์์๋ ์ฝ์ง์ ์๋ฃํ๊ณ ๊ฒ์ฆํ ์ํ๋ผ ๋ณผ ์ ์์ด์ ๐ ๊ทธ๋ผ ๋ฐ๋ก ๋ค์ด๊ฐ๋ณผ๊น์? Crash?์ฑ์์๋ ์๋์น ์์ crash๊ฐ ์ถฉ๋ถํ ๋ฐ์ํ ์๋ ์์ฃ .๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ ์ด์๋ผ๋์ง, ๋ทฐ ๋ฐ์ธ๋ฉ์ด ์ ๋๋ก ์๋์ด ์๋ค๋์ง ์๋๋ฉด ์๋์ ์ผ๋ก fatalError ๋ฑ ํฌ๋์ฌ๋ฅผ ๋ด๋ ํ๊ฒฝ์ด๋ผ๋์ง ๋๋ฌด ๋ฌด์ํ๋ ๋ง์ ์ฑ ํฌ๋์ฌ ํ์์ด ๋ฐ์ํ ์ ์์ต๋๋ค. ๋ฌผ๋ก , ์ด๋ฅผ ์ต๋ํ..
-
MarqueeSwiftUI 2025. 3. 18. 19:00
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ Marquee์ ๋ํด ์์๋ณด๊ณ ๊ฐ๋จํ SwiftUI๋ก ๊ตฌํํด๋ณด๋ ค๊ณ ํฉ๋๋ค. ๐๐ป Marquee?Marquee๋ ํ ์คํธ๊ฐ ์ข์ฐ ํน์ ์ํ ํํ๋ก ์๋์ผ๋ก ์ด๋ํ๋ UI ์์์ ๋๋ค.์ผ๋ฐ์ ์ธ ์ฐ์์ผ๋ก๋ ๋ง์ด๋ค ๋ณด์ จ๋ฏ, ๊ณต์ง์ฌํญ์ด๋ ์ฃผ์ ์์ธ์ ๊ฐ์ ํ์ ๋ฑ์์ ๋ง์ด ์ฌ์ฉ๋ฉ๋๋ค!์ด๋ค๊ฑด์ง๋ ์๋ ์ค์ ๊ตฌํํ๋ฉด์ ๋ ์์ธํ ๋ณผ๊ป์ใ ใ UIKit์์๋ UIView.animate๋ฅผ ํ์ฉํด Marquee ํจ๊ณผ๋ฅผ ๊ตฌํํด๋ณผ ์ ์์ฃ .๊ทธ๋ฐ๋ฐ ์ด๋ฒ ํฌ์คํ ์ SwiftUI์ ์ด์ ์ด๋ผ GeometryReader, Animation ๋ฑ์ ์กฐํฉํด ํ๋ฒ Marquee ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค์ด๋ณผ๊น ํฉ๋๋ค. ๊ทธ๋ผ ์์ํด๋ณผ๊น์?Marquee in SwiftUI์ฝ๋๋ถํฐ ๋ณด์์ฃ ! struct Content..
-
iOS์์ ์๋ฒ ๊ณผ๋ถํ ๊ฐ์ง ๋ฐ API ํธ์ถ ์ต์ ํiOS 2025. 3. 15. 09:51
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ iOS์์ ์๋ฒ ๊ณผ๋ถํ๋ฅผ ๊ฐ์งํ๊ณ ์ด์ API ํธ์ถ์ ์ต์ ํ ํ๋ ๋ช๊ฐ์ง ๋ฐฉ๋ฒ์ ๋ํด ํ๋ฒ ๋ค๋ค๋ณผ๊น ํฉ๋๋ค ๐๐ปIntroiOS๋ฟ ์๋๋ผ ๋ชจ๋ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์์๋ ์๋ฒ์ ์ํํ ํต์ ์ด ํ์์ ์ด์ฃ .ํ์ง๋ง ๊ณผ๋ํ API ํธ์ถ์ ์๋ฒ์ ๋ถ๋ด์ ์ฃผ๊ธฐ์ ์ฑ๋ฅ ์ ํ, ํธ๋ํฝ ์ด๊ณผ, ๋น์ฉ ์ฆ๊ฐ ๋ฑ์ ๋ฌธ์ ๋ฅผ ์ผ๊ธฐํ ์๊ฐ ์์ด์.๋ฐ๋ผ์ ์๋ฒ์ ์ํ๋ฅผ ๋ชจ๋ํฐ๋งํ๊ณ , ๊ณผ๋ถํ ์ฌ๋ถ๋ฅผ ํ๋จํด ์ ์ ํ API ํธ์ถ์ ์กฐ์ ํ๋ ์ ๋ต์ด ํ์์ ์ ๋๋ค. Criteria for determining server overload์๋ฒ ๊ณผ๋ถํ๋ผ๋๊ฑธ ํ๋จํ๋ ๊ธฐ์ค์ ๋ํด ํ๋ฒ ์๊ธฐํด๋ณผ๊น ํฉ๋๋ค.์ฐ๋ฆฌ๋ ์๋ฒ๊ฐ ๋๋ ค์ก๋ค? ๋ผ๋๊ฑธ ๊ฐ์ผ๋ก ํ๋จํ๊ธฐ๋ณด๋ค ๋ฐ์ดํฐ๋ฅผ ํตํด ์ธก์ ํด์ผ ํ์ฃ . ์ด๋ค ๋ฐฉ๋ฒ๋ค์ด ์๋์ง ๋ณผ..
-
Server-Driven UIiOS 2025. 3. 7. 18:08
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ Server-Driven UI์ ๋ํด ํบ์๋ณด๊ฒ ์ต๋๋ค ๐๐ปServer-Driven UI?์๋ฒ ๋๋ฆฌ๋ธ UI๋ผ๋๊ฑด ์ฑ์ UI๋ฅผ ์๋ฒ์์ ๋์ ์ผ๋ก ์ ์ํ๊ณ , ํด๋ผ์ด์ธํธ๋ ์ด๊ฑธ ํด์ํด์ ํ๋ฉด์ ๊ตฌ์ฑํ๋ ๋ฐฉ์์ ๋งํด์ ๐์ฆ, ํ๋ฉด์ ๊ตฌ์ฑํ๋ ์ปดํฌ๋ํธ ์์๋ค์ JSON ๋ฑ์ ํ์์ผ๋ก ์๋ฒ์์ ๋ด๋ ค์ฃผ๋ฉด ํด๋ผ์ด์ธํธ๊ฐ ์ด๋ฅผ ํด์ํด์ UI๋ฅผ ๋์ ์ผ๋ก ๋ ๋๋งํฉ๋๋ค.๊ฒฐ๊ตญ ์งํฅํ๋ ๋ชฉํ๋ ์ฑ ๋ฐฐํฌ ์์ด UI ๋ณ๊ฒฝ์ด ์์ ๋กญ๊ณ , A/B ํ ์คํธ ๋ฑ์ ์ฉ์ดํ๋ค๋ ํน์ง์ด ์์ฃ ! ๊ทธ๋ผ ์๋ฒ์์ ์ด๋ป๊ฒ ๋ด๋ ค์ฃผ๋๊ฑด์ง ํ๋ฒ ์ดํด๋ณผ๊ป์. JSON ๊ธฐ๋ฐ UI ์ ์์๋ฒ๋ UI ์์๋ค์ JSON ํํ๋ก ์ ์ํด์ ํด๋ผ์ด์ธํธ์ ์ ๋ฌํด์ค๋๋ค. ์๋ ์๋ฒ ๋ฆฌ์คํฐ์ค ์๋ฅผ ๋ณผ๊น์? { "title": "๋ฉ์ธ ํ..
-
Factory PatterniOS 2025. 3. 3. 19:25
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ Factory Pattern์ ๋ํด iOS๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ฐ๋จํ ์ ๋ฆฌํด๋ณด๋ ค ํฉ๋๋ค ๐๐ปFactory Pattern?Factory Pattern์ ๊ฐ์ฒด ์์ฑ์ ์ค์ ์ง์คํํด ๊ด๋ฆฌํ๋ Creational(์์ฑ) ๋์์ธ ํจํด์ ๋๋ค.Factory Pattern์ ํตํด์ ๊ฐ์ฒด ์์ฑ ๋ก์ง์ ํ ๊ณณ์ ๋ชจ์ ์ ์๊ณ , ๋ณ๊ฒฝ์ด ํ์ํ ๋ ์ต์ํ์ ์์ ์ผ๋ก ์ ์ง๋ณด์ ํ ์ ์๋ค๋ ์ฅ์ ์ด ์์ฃ ! Factory Pattern์ ํต์ฌ ๊ฐ๋ ์ ๋ช๊ฐ์ง๊ฐ ์์ด์ ๐ 1๏ธโฃ ๊ฐ์ฒด ์์ฑ์ ์บก์ํํด ํด๋ผ์ด์ธํธ ์ฝ๋์์ ๊ฐ์ฒด ์์ฑ ๋ก์ง์ ์จ๊น2๏ธโฃ ๊ฐ์ฒด์ ๊ตฌ์ฒด์ ์ธ ๊ตฌํ์ ์จ๊ธฐ๊ณ ์ธํฐํ์ด์ค (Protocol)์ ํตํด ์ฌ์ฉ3๏ธโฃ ๊ฐ์ฒด ์์ฑ ๋ฐฉ์์ ๋ณ๊ฒฝํด๋ ํด๋ผ์ด์ธํธ ์ฝ๋์ ์ํฅ์ ์ฃผ์ง ์์ ๊ทธ๋ผ ..
-
RxSwift - withUnretainedRxSwift 2025. 2. 21. 07:54
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ RxSwift์ withUnretained์ ๋ํด ์ ๋ฆฌํด๋ณด๊ฒ ์ต๋๋ค ๐๐ปRxSwift๋ฅผ ์ฌ์ฉํ๋ฉด์ ๋ฉ๋ชจ๋ฆฌ ๋์ ํน์ ๊ฐํ ์ํ ์ฐธ์กฐ ๋ฌธ์ ๋ฅผ ๋ง๋ ์ ์๋ ์ํฉ์ด ๋ง์ต๋๋ค.๋ฌผ๋ก ์ด๋ฅผ ์ํด weak self๋ฅผ ์ฌ์ฉํ์ฌ ํด๊ฒฐํ ์ ์์ง๋ง, ๊ท์ฐฎ์์์..?๊ทธ๋์ ๋ณด๋ค ๊ฐ๋ ์ฑ์ด ์ข๊ณ ํธ๋ฆฌํ๊ฒ withUnretained๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ทธ๋ผ ํ๋ฒ withUnretained๊ฐ ๋ฌด์์ด๊ณ ์ด๋ป๊ฒ ์ฌ์ฉํ๋์ง ์์๋ณผ๊น์? withUnretained?withUnretained๋ RxSwift์์ weak self ํจํด์ ๋ณด๋ค ๋ช ํํ๊ณ ์์ ํ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ๋์์ฃผ๋ ์ฐ์ฐ์์ ๋๋ค.์ฆ, ๊ธฐ์กด weak self ์ฌ์ฉ ์ ๋ฐ์์ํค๋ ์ต์ ๋์ ์ฒ๋ฆฌํ๋๊ฒ์ ๋ํด ๋์ผํ๊ฒ ์ฒ๋ฆฌ๋ฅผ ..
-
RxSwift/RxCocoa - TraitsRxSwift 2025. 2. 17. 08:49
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ RxSwift์ Traits์ ๋ํด ์ ๋ฆฌํด ๋ณด๊ฒ ์ต๋๋ค ๐๐ปTraits?์ฐ์ RxSwift์์ Observable์ ๋งค์ฐ ์ ์ฉํ ์คํธ๋ฆผ์ด์ง๋ง, ๋๋ก๋ ํน์ ํ ์ก์ ์ ๊ฐ์ ํ๊ณ ์ถ์๋๊ฐ ์์ ์ ์์ต๋๋ค.Traits์ด ์ด๋ฐ ํน์ ํ ํจํด์ ๋ฐ๋ฅด๋ Observable์ ๋ณํ์ผ๋ก ๊ทธ ์ญํ ์ ํด์ค๋๋ค.์ฆ, Observable๋ก๋ ์๋ onNext, onError, onCompleted ๋ฑ์ ๋ค ์ฒ๋ฆฌํ๋ค๋ฉด Traits์ ํ์ํ๊ฒ๋ง ์ฒ๋ฆฌํ ์ ์์ฃ . RxSwift์ RxCocoa์์๋ ๋ค์๊ณผ ๊ฐ์ Traits๋ค์ ์ ๊ณตํฉ๋๋ค ๐ 1๏ธโฃ Single2๏ธโฃ Completable3๏ธโฃ Maybe4๏ธโฃ Driver5๏ธโฃ Signal6๏ธโฃ ControlProperty7๏ธโฃ Cont..
-
RxSwift/RxCocoa - subscribe vs bind vs driveRxSwift 2025. 2. 14. 11:19
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ RxSwift์์์ bind, subscribe, drive์ ์ญํ ๊ณผ ์ด๋ค ์ฐจ์ด๊ฐ ์๋์ง์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค ๐๐ป์ค๋ ์ ๋ฆฌํด๋ณผ ์ด subscribe, bind, drive๋ ๊ฐ๊ฐ ๋ชฉ์ ๊ณผ ํน์ง์ด ๋ค๋ฅด๊ธฐ์ ์ ์ ํ ์ฌ์ฉํ๋๊ฒ์ด ์ข์ต๋๋ค. ๊ทธ๋ ๊ธฐ์ ์ด ์ธ๊ฐ์ง์ ๋ํด ์ฐจ์ด์ ์ ํ์คํ ์๊ณ ์ด๋ค ์ํฉ์์ ์ด๋ค๊ฑธ ์ฌ์ฉํ ์ง ์ฒดํฌํด๋ณด์ฃ ! ๐ฏโ๏ธ ๊ทธ์ ์ ํ๋ ์ง๊ณ ๊ฐ๋ณผ๊ป์. RxSwift์์์ ํต์ฌ ๊ฐ๋ ์ Observable๊ณผ Observer์ฃ .์ฌ๊ธฐ์ Observable์ ๋ฐ์ดํฐ๋ฅผ ๋ฐฉ์ถํ๋ ์คํธ๋ฆผ์ด๊ณ , Observer๋ ๋ฐฉ์ถ๋ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ณ ์ฒ๋ฆฌํ๋ ๊ฐ์ฒด ์ญํ ์ ํฉ๋๋ค.์ด ๋ ๊ฐ๋ ์ ํตํด์ ์ฐ๋ฆฌ๋ ๋ฐ์ํ ํ๋ก๊ทธ๋๋ฐ์ ๊ตฌํํ๋๊ฒ์ด์ฃ .์ฌ๊ธฐ์ subscribe, bind..