Swift ๋ฌธ๋ฒ ๊ณต๋ถ๋ง ํ๋๊น ์ง๋ฃจํด์ iOS App์ ๋ง๋๋ ๊ณต๋ถ๋ ๊ฐ์ด ๋ณํํ๋ ค๊ณ ํ๋ค. ๋ณธ๊ฒฉ์ ์ธ iOS App ๊ณต๋ถ๋ฅผ ์์ํ๊ธฐ ์ ์ ๋ช ๊ฐ์ง๋ฅผ ์ ๋ฆฌํ๋ ค๊ณ ํ๋ค.App์ Application์ ์ค๋ง๋ก Application software ๋๋ Application
์ฑ์ ์ฌ์ฉ์์ ๊ด์ฌ์ ํญ์ ๊ธฐ๋ค๋ฆฐ๋ค. ์ฌ์ฉ์๊ฐ ์ฑ์ ์คํํ๋ฉด ์์คํ (iOS)๋ ์ด๋ ๊ฒ ์ฃผ๋ชฉ ๋ฐ์ ์ฑ์๊ฒ ๋ฆฌ์์ค๋ฅผ ๋ชฐ์์ค๋ค. ์ด๋ ๊ฒ ์ฌ์ฉ์์ ๊ด์ฌ์ ๋ฐ์ ๋๋ ๋ชป๋ฐ์ ๋๋ ์ฑ์ ์ํ๊ฐ ํฌ๊ทธ๋ผ์ด๋, ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ๋ณํ๋ค. ์ฑ ๊ฐ๋ฐ์๋ ์ด๋ ๊ฒ ์ฑ์ ์ํ๊ฐ ๋ณ๊ฒฝ๋จ์ ๋ฐ๋ผ ๋์
App์์ ๊ฐ์ง๊ณ ์๋ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ค๋ค.์ฌ์ฉ์์ ์ธํฐ๋์ ์ ๋ฐ์ App์ ์๋ ค์ฃผ๋ ์ญํ ์ ํ๋ค.์ฅ์ View๋ฅผ ์ํ ์ฝ๋๋ฅผ ์์ฑ ๊ฐ๋ฅํ๋ค.View๋ฅผ ์ง๊ด์ ์ผ๋ก ์ดํดํ ์ ์๋ค.View ์์ ์๋๊ฐ ๋น ๋ฅด๋ค.๋จ์ ์์ ๋ด์ฉ์ ๋ณด๊ธฐ๊ฐ ์ด๋ ค์ -> conflict๊ฐ
Model๋ฐ์ดํฐView๋ฐ์ดํฐ ํํ ๊ฐ์ฒด๋ฐฐ๊ฒฝ์ค๋ช Apple์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก MVC(Model-View-Controller) ํจํด์ ๊ฐ์ด๋ ํจํ์ง๋ง, ๊ฐ๋ฐ์๋ค์ด ์ค๋ฌด ์งํ๊ฐ์ MVC๋ฅผ ๊ฐ์ด๋๋๋ก ์์ -> ๊ฐ๋ฐ ๋ถ์ฑ๊ฐ ์์๋ ์ข์ ๊ตฌ์กฐ๊ฐ ๋ฌด์์ด๊ณ , ๋ฐ๋ณต๊ฐ๋ฅํ๋ฉด์ ์ง์๊ฐ๋ฅํ
Auto Layout์ View์ ์ง์ ๋ ์ ์ฝ ์กฐ๊ฑด์ ๋ฐ๋ผ View ๊ณ์ธต์ ์๋ ๋ชจ๋ View์ ํฌ๊ธฐ์ ์์น๋ฅผ ๋์ ์ผ๋ก ๊ณ์ฐํ๋ค. ์๋ฅผ ๋ค์ด, ๋ฒํผ์ด ์ด๋ฏธ์ง์ ์ํ์ผ๋ก ์ค์์ ์ค๋๋ก ์ ํํ๊ณ ๋ฒํผ์ ์๋จ ๊ฐ์ฅ์๋ฆฌ๊ฐ ํญ์ ์ด๋ฏธ์ง ํ๋จ๋ณด๋ค 8ํฌ์ธํธ ์๋์ ์๋๋ก ํ ์ ์
iOS app์ ํ๋ ์ด์์ view๋ก ๊ตฌ์ฑ๋์ด ์๊ณ , ๊ฐ๊ฐ์ view๋ค์ life cycle์ ๊ฐ์ง๊ณ ์์ด์ ์ด๋ฅผ ๊ณ ๋ คํด์ผํ๋ค.ViewDidLoad()View๊ฐ ๋ก๋ฉ๋์์ ๋ ์๋์ผ๋ก ํธ์ถ๋๋ค.์ผ๋ฐ์ ์ผ๋ก resource๋ฅผ ์ด๊ธฐํํ๊ฑฐ๋ ์ด๊ธฐํ๋ฉด์ ๊ตฌ์ฑํ ๋ ์ฃผ๋ก ์ฌ์ฉํ
1. Data Flow SwiftUI ์ด์ ์๋ PlayerViewController๊ฐ PlayerView, PlayButton์ ๊ฐ์ง๊ณ ์๊ณ , ์ฌ์์ค์ด๋ผ๋ ์ ๋ณด(isPlaying)๋ PlayerViewController์ PlayButton์ด ๊ฐ์ง๊ณ ์์ด์ UIKit
์ปดํจํฐ ๋คํธ์ํฌ๋ ๋ด๋ถ ๊ธฐ๋ฅ์ ๊ธฐ์ด๋ก ํ์ฌ ๋ค์ํ ๊ตฌ์กฐ๋ก ๋๋ ์ ์๋ค. ํนํ, ํธ์คํธ๊ฐ ์ ๊ณตํ๋ ๋ณต์กํ ๋คํธ์ํฌ ๊ธฐ๋ฅ์ ์ฐ๊ด๋ ๊ทธ๋ฃน์ผ๋ก ๋ฌถ์ด ๊ณ์ธต ๋ชจ๋ธ๋ก ์ค๋ช ํ ์ ์๋ค.๊ตญ์ ํ์คํ ๋จ์ฒด์ธ ISO์์ OSI(Open Systems Interconnection) 7๊ณ์ธต
์น ์๋ฒ(Web Server)์ WAS(Web Application Server)๋ ๋ชจ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๊ณตํ๋ ๋ฐ ์ฌ์ฉ๋์ง๋ง, ๊ทธ ์ญํ ๊ณผ ๊ธฐ๋ฅ์๋ ์ค์ํ ์ฐจ์ด์ ์ด ์๋ค! ์ฐจ์ด๋ฅผ ์ดํดํ๊ธฐ ์ํด์ ์ ์ ์ธ ํ์ด์ง์ ๋์ ์ธ ํ์ด์ง๋ฅผ ์ด ๋๋ฅผ ๊ฐ์ ํด๋ณด์.์ ์ ์ธ ํ์ด์ง์ ๋
ํ ํฐ, ์ธ์ , ์ฟ ํค๊ฐ ํ์ํ ์ด์ ํด๋ผ์ด์ธํธ์ ์๋ฒ๋ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ณผ์ ์ HTTP Protocol ๋ฐฉ์์ ์ฌ์ฉํ๋ค. HTTP Protocol์ ํน์ง connectionless(๋น์ฐ๊ฒฐ์ฑ์งํฅ) HTTP๋ ๋น์ฐ๊ฒฐ์ฑ ์งํฅ ํ๋กํ ์ฝ์ด๋ค. ์ด๋ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์์ฒญ์ ๋ณด๋ด๊ณ ์๋ฒ๊ฐ ์๋ต์ ๋ฐํํ ํ, ๊ทธ ์ฐ๊ฒฐ์ด ์ฆ์ ์ข ๋ฃ๋๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค. ๊ฐ ...
ํ ์ดํ๋ก์ ํธ์์ ์ด๋ฏธ์ง๋ฅผ PhotosPicker๋ก ๋ฐ์์ ํ๋ฉด์ ๋ณด์ฌ์ค ๋, ๋ฐ์ PhotosPickerItem -> Data -> UIImage -> Image๋ก ๋ฐ๊ฟ์ฃผ๋ convertImage ํจ์๋ฅผ ์์ฑํ ๋ ๋ช๊ฐ์ง ๊ถ๊ธ์ฆ์ด ์๊ฒผ๋ค.์ฌ์ง์ด nil์ผ ์ ์์ผ๋๊น s
์ ๊ณต์๊ฐ์ Java๋ฅผ ๋ฐฐ์ฐ๋ฉฐ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ต์ํด์ง ๋๋ก์จ, SwiftUI์์ View๋ struct๋ก, ViewModel์ class๋ก ๊ตฌํํ๋ ํจํด์ ์ฒ์ ์ ํ์ ๋ ๋ง์ ์๋ฌธ์ด ๋ค์๋ค. Java์์๋ ๋๋ถ๋ถ์ ๊ฐ์ฒด๋ฅผ class๋ก ๊ตฌํํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ด์๊ธฐ์
์ํํธ์จ์ด ์ํคํ ์ฒ ์์ ์ ํตํด ๋๋ฉ์ธ ์ค๊ณ์ ์ค์์ฑ์ ๋ฐฐ์ ๋ค. 1ํ๊ธฐ ๋์ ๊ฐ์ฒด์งํฅ ์ค๊ณ๋ฅผ ํ์ตํ๋ฉด์ ์ ์ค์ผ์ด์ค์ ํด๋์ค ๋ค์ด์ด๊ทธ๋จ์ ํตํด ์์ํ ๋น์ฆ๋์ค ๋ก์ง์ ์ค๊ณํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ ๋ค. ์ด ๊ณผ์ ์์ ๋๋ฉ์ธ ๋ชจ๋ธ์ ํ์ค ์ธ๊ณ๋ฅผ ๊ทธ๋๋ก ๋ฐ์ํ๋ฉฐ, ๊ธฐ์ ์ ์ธ ์ ์ฝ ์์ด ์
iOS ์ฑ์ ๊ฐ๋ฐํ๋ฉด์ ํ ํฐ ๊ธฐ๋ฐ ์ธ์ฆ์ ๋ํด ๊น์ด ๊ณต๋ถํ๋ค๊ฐ ํ ๊ฐ์ง ์๋ฌธ์ ์ด ์๊ฒผ๋ค. JWT(JSON Web Token)๋ ์ด๋ฏธ ์์ฒด์ ์ผ๋ก ์ํธํ๋์ด ์๋๋ฐ, ์ด๋ฅผ ์ ๋ค์ iOS์ Keychain์ด๋ผ๋ ์ํธํ๋ ์ ์ฅ์์ ๋ณด๊ดํด์ผ ํ๋์ง์ ๋ํ ์๋ฌธ์ด์๋ค.์ด
์ฌ์ง ์ถ์ฒ๋ก๊ทธ์ธ, ํ์๊ฐ์ ์ MVVM (Model-View-ViewModel) ์ํคํ ์ฒ ํจํด์ ๋ฐ๋ฅด๊ณ ์๋ค. ์ด๋ฌํ ๊ตฌ์กฐ๋ฅผ ์ ํํ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ๋ค:๊ด์ฌ์ฌ์ ๋ถ๋ฆฌ: ๋ฐ์ดํฐ ๋ชจ๋ธ, ๋น์ฆ๋์ค ๋ก์ง, UI๋ฅผ ๋ถ๋ฆฌํ์ฌ ์ฝ๋์ ๊ฐ๋ ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ํฅ์์ํจ๋ค.ํ ์คํธ ์ฉ์ด์ฑ: