์๋ฒ ํต์ ์ ์
์ ๋ณด์ฌ์ค UIImage ๋ณํ ์์ urlString โถ๏ธ url โถ๏ธ image url๋ก ๋ฐ๊พธ๊ณ ๋๋ image๋ก ๋ฐ๊พธ๋ ๊ณผ์ ์ ์ด๋์์ ์งํํ๋ ๊ฒ์ด ์ข์๊น? ์๋ฒ ํต์ ์์ ์์ ํ ์ง => ์๊ฐ์ด ์ค๋๊ฑธ๋ฆฌ๊ณ , ์ฌ์ฉ์๊ฐ ๋ณด์ง ์์ ์ ์๋ ์ ๋ณด์ ๋ํด์๋ ์์
์ ์งํํ ์ ์์ด์ ๋นํจ์จ์ ์
์์ ์ฒ๋ฆฌํ ์ง => ์กฐ๊ธ ๋ ์ ์ ํด๋ณด์ธ๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก ์๋ฒ ํต์ ์ ์
์์ ํ ๊ฒฝ์ฐ ์
์ด ๊บผ๋ด์ง ๋๋ง๋ค ์์ฒญ์ด ๋ค์ด๊ฐ call ์๊ฐ ์ฆ๊ฐํ ์ ์๋ค. Alamofire์ ๋ฐ์ดํฐ ๋ฐ์์ค๋ ๋ฉ์๋(Response Handler) // Response Handler - Unserialized Response func response(queue: DispatchQueue = .main, completionHa..
swift
๋ณธ ๊ธ์ WWDC ๋ฅผ ๋ณด๊ณ , ๋ฒ์ญ ๋ฐ ์์ฝ ๊ทธ๋ฆฌ๊ณ ์คํํด๋ณด๋ ์คํฐ๋ ํ๋ก์ ํธ์ ์ผํ์
๋๋ค. Introducing Combine WWDC19์๋ Apple์ ์ต์ Framework์ธ Combine์ ์๊ฐํฉ๋๋ค. ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ์ ๋ํด์ ์ด์ผ๊ธฐํ์๊ณ ํ๋ฉด์ ์๋ง์ ์ฌ๋๋ฐ์. ๊ฐ์ด ์์๋ฅผ ๋ณด๊ณ ์ดํดํ๋ฉด์ Combine์ ๋ํด์ ์์๋ณด๋๋ก ํฉ์๋ค. ๊ฐ๋จํ ํ์๊ฐ์
ํ๋ฉด์ ์์๋ก ๋ญ๋๋ค. ์ด ํ๋ฉด์์์ ์๊ตฌ์ฌํญ์ ํฌ๊ฒ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ์ฐ์ ์ฌ์ฉ์ ์ด๋ฆ์ด ์ ํจํ์ง ๋คํธ์ํฌ์ ์์ฒญ์ ํด์ ํ์ธ์ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋น๋ฐ๋ฒํธ๊ฐ ์๋ก ์ผ์นํ๋์ง ํ์ธ์ ํฉ๋๋ค. ์ด ๋ชจ๋ ์์
์ ๋ฉ์ธ ์ค๋ ๋์์ ์ฐจ๋จ๋์ง ์๊ณ ๋ฐ์ํ ์ธํฐํ์ด์ค๋ฅผ ์ ์งํด์ผ ํฉ๋๋ค. ๋จผ์ ์ฌ์ฉ์ ์ด๋ฆ์ ์
๋ ฅํ๊ธฐ ์์ํฉ๋๋ค. ์ฌ๊ธฐ์๋ ์ด๋ฏธ ๋ง์ ๋น๋๊ธฐ ์์
์ด ์ง..
์ธ์ฆํค์ gitignore ํญ์ gitignore๋ ๋จผ์ ์ฒ๋ฆฌํ์. ์ดํ์ ์ธ์ฆํค๋ฅผ ์ฒ๋ฆฌํ๋ ค๊ณ ํ๋ฉด commit์๋ ๋จ์์๊ณ , ์ด์ ๊ธฐ๋ก์ ๋จ์์์ผ๋ฏ๋ก ๋ฒ๊ฑฐ๋กญ๋ค. ํ๋ก์ ํธ ๋ด์์ empty ํ์ผ ์์ฑ ํ ํ๋ก์ ํธ ๋ฐ๋ก ๋ฐ์ .gitignore ์์ฑ ๊ฐ๋ฅ ํ์
์์๋ property list, configuration์ ์ด์ฉํ๋ ์์ผ๋ก๋ ์ธ์ฆํค๋ฅผ ๊ด๋ฆฌํ๋ค. ์จ๊ฒจ์ผ ํ๋ ํ์ผ์ด ๋ง์ผ๋ฉด public repository๊ฐ ์ ํฉํ์ง๋ถํฐ ํ๋จํ์. gitignore.io์ ๊ฐ๋ฉด ์ฝ๊ฒ ํ์ผ์ ๋ค์ด๊ฐ ๋ด์ฉ์ ๋ง๋ค ์ ์๋ค. ์จ๊นํ์ผ๋ก ์ ๋ฑ๋กํ๋ฉด ํ๋ก์ ํธ ๋ด์ ํ์ผ ์์ A(์ถ๊ฐ)/M(์์ ) ๋งํฌ๊ฐ ๋จ์ง ์๋๋ค. Type Inference์ Type Annotation ์๋ ์ฐจ์ด Type Annotation์ ์ด์ฉํ๊ธฐ..
App Transport Security Apple ์ธก์์๋ ์ฑ ์์ฒด์ ๋ณด์์ฑ์ ์ํด์ ATS(App Transport Security)๋ผ๋ ์ ์ฑ
์ ํตํด ๊ธฐ๋ณธ์ ์ผ๋ก https ํต์ ์ ํ๋๋ก ์ ๋ํ๊ณ ์๋ค. ๊ทธ๋์ http ์๋ฒ์ ํต์ ์ ํ๋ ค๊ณ ํ๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ๋ค. http ์๋ฒ๋ก ํ
์คํธํ๋ ค๋ฉด Info.plist์์ ATS ๊ด๋ จ ์ค์ ์ ํด์ฃผ์ด์ผ ํ๋ค. ATS๋ iOS 9 ๋ฒ์ ์ดํ๋ถํฐ ์ ์ฉ๋ ๊ฐ์ธ์ ๋ณด๋ณดํธ ๊ธฐ๋ฅ์ด๊ณ , Xcode 7 ๋ฒ์ ์ด์์์ ์ฑ ์์ฑ ์ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ๊ฐ์ ธ๊ฐ๊ฒ ๋๋ ๋ณด์ ์ ์ฑ
์ด๋ค. http : Allow Arbitrary Loads๋ฅผ YES๋ก ๋ณ๊ฒฝ https : ๊ตณ์ด ์ค์ ์ ํด์ค ํ์๊ฐ ์์ ๋ฐ์ดํฐ ๋ฆฌ๋ก๋ ์์ ํ
์ด๋ธ ๋ทฐ๋ ์ปฌ๋ ์
๋ทฐ ์ฌ์ฉ ์ viewDidLoad ์์ ์ ๊ฐ์ง๊ณ ์๋ ๋ฐ์ดํฐ..
ํ๋กํ ์ฝ๊ณผ String(describing: _)์ฌ์ฉํด์ ๋ฆฌํฐ๋ดํ ๊ฐ ๋์ด๋ด๊ธฐ ๊ทธ ๋์ identifier ๊ฐ์ ์ฐ๋ ๊ณณ์ด ์ ๋ง ๋ง์๋ค. ViewController์ TableViewCell, CollectionViewCell ๋ฑ์์ ๋ง์ด ์ฌ์ฉํ์๋ค. ๋งค ํด๋์ค์์ ํ๋์ฝ๋ฉ๋ ๋ฌธ์์ด ๊ฐ์ ๋ฃ๋ ๋์ ํ๋กํ ์ฝ์ ์ด์ฉํ๋ฉด ๋ถํธํจ๊ณผ ๋ฐ๋ณต์ ์ค์ผ ์ ์๋ค. protocol Reusable: Anyobject { static var reuseidentifier: String { get } } ๋ค์๊ณผ ๊ฐ์ด extension์์ ํ๋กํ ์ฝ์ ์ฑํํ๊ฒ ๋๋ฉด, ์ด์ reuseidentifier๋ฅผ ํธํ๊ฒ ์ ๊ทผํด์ ์ฌ์ฉํ ์ ์๋ค. extension UIViewController: ReusableViewProtocol { /..
Notifications ๊ธฐ๋ณธ์ ์ผ๋ก ์๋ฆผ์ ๋ํ ํ์ฉ ๊ถํ์ด ํ์ํจ. Local Notifications ๋๋ฐ์ด์ค๋ด์ ์ ์ฅ๋์ด ์๋ ์๋ฆผ์ ๋ฐ๋ ๋ฐฉ์ ๊ฐ์ธ์ด ํผ์ ๊ด๋ฆฌํ๋ ์ฑ Xcode ๋ด์ ๋ฐ์ดํฐ, ์ ๋ณด๋ฅผ ์ ์ฅํด๋๊ณ ์๋ฆผ์ ๋ณด๋ Push Notifications ์๋ฒ์์ ์๋ฆผ์ ๋ฐ์ ์ด๋ค ์๊ฐ์ ์ด๋ค ๋ด์ฉ์ด ์ฌ์ง ๋ชจ๋ฅด๋ ์ํ ๊ถํ ํ์ฉํ ๊ฒฝ์ฐ iOS ์๋ฆผ ์ผํฐ์ ํ์ ์ฑ ์ฌ์ฌ์ฉ๋ฅ (Retention)์ ๊ธฐ์ฌ ์ฑ์ด ์ข
๋ฃ๋ ๊ฒฝ์ฐ์๋ ์ฌ์ฉ์์๊ฒ ์๋ก์ด ์ ๋ณด๋ฅผ ํ์ Local vs Remote Local Xcode ๋ด์ ๋ฌธ๊ตฌ๊ฐ ๋ฏธ๋ฆฌ ์ ์ฅ๋์ด ์๋ ์ํ ์ฑ ๋ด์์ ์ปจํ
์ธ ๋ฅผ ๊ฐ์ง๊ณ ์๊ณ , ์ปจํ
์ธ ๊ฐ ๊ณ ์ ๋์ด ์๋ ์ํ Remote ์๊ฐ๊ณผ ์ปจํ
์ธ ๋ชจ๋ ๋ค์ด๋๋ฏนํ ์ํ ๊ถํ -> ์์ฒญ -> ์๋ฆผ ๊ถํ (Alert, Ba..
๋ค์ด๊ฐ๋ฉฐ ์๋
ํ์ธ์, ํ๋ผ์
๋๋ค :) ์ ๋ง ์ค๋๋ง์ ๊ธ์ ์๋๋ค..๐ ์์ ๋ฒ์์์ด ์ฌ ๊ฒ๋ง ๊ฐ์์ ์์ฌ์์ฌ ํ๋ฃจ๋ฅผ ๋ณด๋ด๊ณ ์์ง๋ง ๋ค์๊ธ ๋ง์์ ๋ค์ก๊ณ ์ด์ฌํ ํด๋ณด๊ณ ์ ํฉ๋๋ค. ๊ธ ์ฐ๋ ๊ฒ์ ์๊ฐ๋ณด๋ค ๋๋ฌด ๋ฏธ๋ค๋๊ณ ์์๋๋ฐ, ์๋ฒฝ์ ์ถ๊ตฌํ๊ธฐ ๋ณด๋ค๋ ์ผ๋จ ์ค์ฒ์ ํ๋ ๊ฒ์ ์ต๊ด์ ๋ค์ด๋๋ก ๋
ธ๋ ฅํด๋ณด๊ฒ ์ต๋๋ค. ์ค๋ ๊ฐ๋จํ๊ฒ ์๊ฐํ ๋ด์ฉ์์. ์ ๊ฐ ๋ ์ง ํ์์ ๊ด๋ จํด์ ์ฌ์ฉํ๋ ์ฝ๋ ์กฐ๊ฐ์ด๋ผ๊ณ ํ๋ฉด ๋ ๊น์. ๋ฃ๊ณ ์๋ ์์
์์๋ ๋ ์ง๋ฅผ ๋ค๋ค๋ณผ ์ผ์ด ์์๊ณ , ์งํ ์ค์ธ ํ๋ก์ ํธ ๋ด์์๋ ์ ๊ฐ ์บ๋ฆฐ๋๋ฅผ ๋งก๊ณ ์์ด์ ๋ ์ง๋ฅผ ๋ค๋ฃฐ ์ผ์ด ๋ง์๋ฐ์. ์๊ฐ๋ณด๋ค ๋ ์ง ํ์์ ๊ด๋ฆฌํ๊ธฐ ๋๋ฌด ๊ท์ฐฎ์ต๋๋ค. ๊ทธ๋์ ์ด๊ฑฐํ์ ์ด์ฉํด์ ์ข ๋ ๊น๋ํ๊ฒ DateFormat์ ๊ด๋ฆฌํด๋ณด๋๋ก ํด์. ์ฐ๋ฆฌ๊ฐ ๊ทธ๋์ ๋ ์ง๋ฅผ ๋ค๋ฃจ๋ฉด์ ํ๋ ํ๋์ ..
์์
๋ฃ๊ณ ์์ดํจ๋์๋ ์๊ฐ์ด๋ ๋ด์ฉ๋ค ๋ค ๊ธฐ๋กํด๋๋๋ฐ, ์ด๊ฑธ ์ปดํจํฐ๋ก ์ฎ๊ธฐ๋ ๊ฒ ์ ์ด๋ฆฌ ํ๋ ๊ฑด์ง.. ๊ทธ๋ ๋ค๊ณ ๋ฐ๋ก ์ปดํจํฐ์ ์ ์๋ ์ด์ํ๊ณ .. ์ข ๋ ๋
ธ๋ ฅํด๋ด์ผ๊ฒ ์ด์.. ๋ฐ๋ฆฐ TIL ์
๋ก๋ ํด๋ณผ๊ฒ์! ใ
ใ
Protocol(ํ๋กํ ์ฝ) ํ๋กํ ์ฝ์ ๊ท์น์ด๋ค. ์ค์ง์ ์ธ ๊ตฌํ์ ๋ด๋นํ์ง๋ ์๋๋ค. ๊ตฌํ์ ํ๋กํ ์ฝ์ ์ฑํํ ์ชฝ์์ ๋ด๋นํ๋ค. ๊ฐ์ฅ ํฐ ์ฅ์ ์ค ํ๋๊ฐ ํํ๋ฅผ ๊ฐ์ ํ ์ ์๋ค๋ ๋ถ๋ถ์ด๋ค. ํ์ผ๋ง๋ค ์์ฑํด์ผ ํ๋ ๋ฉ์๋ ๋ช
์ด๋ ํ๋กํผํฐ ๋ช
๋๋ ๊ตฌํ๋์ด์ผ ํ๋ ๋ถ๋ถ์ ๋ํ ๊ฐ์ ๋ฅผ ํ ์ ์๋ค๋ ๊ฒ์ด๋ค. ์ผ๊ด์ ์ธ ํํ๋ฅผ ์ ์งํ ๋ ์ ์ฉํ๋ค. ํ๋กํ ์ฝ๊ณผ ๋ถ๋ชจ ํด๋์ค์ ๊ฐ์ฅ ํฐ ์ฐจ์ด๋ผ๊ณ ํ๋ค๋ฉด ํด๋์ค๋ ๋จ์ผ ์์๋ง ๊ฐ๋ฅํ ๋ฐ๋ฉด์, ํ๋กํ ์ฝ์ ๋ค์ค ์ฑํ์ด ๊ฐ๋ฅํ๋ค๋ ์ ์ด๋ค. ๋ค์ ๊ธ Taehyeon-Kim..