TIL

ยท๐ŸŒฑ SeSAC
ํด๋กœ์ € ํ•จ์ˆ˜์˜ ํ˜•ํƒœ์™€ ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ ๊ตฌ์กฐ๋ฅผ ์ž˜ ์ดํ•ดํ•œ๋‹ค๋ฉด ์‰ฝ๊ฒŒ ๋ฐ›์•„๋“ค์ผ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค. // ๋‹ค์Œ๋„ ์ž˜ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ํด๋กœ์ €์˜ ์ดํ•ด๋ฅผ ๋„์šธ ์ˆ˜ ์žˆ๋‹ค. func example() {} example // ํ•จ์ˆ˜ ์ž์ฒด example() // ํ•จ์ˆ˜ ํ˜ธ์ถœ ํด๋กœ์ € ๊ธฐ๋ณธ ๊ตฌ์กฐ ํด๋กœ์ € ํ—ค๋”์™€ ํด๋กœ์ € ๋ฐ”๋”” ๋ถ€๋ถ„์„ ์ž˜ ์ดํ•ดํ•˜์ž. { (๋งค๊ฐœ ๋ณ€์ˆ˜) -> ๋ฆฌํ„ด ํƒ€์ž… in// ํด๋กœ์ € ํ—ค๋” ์‹คํ–‰ ๊ตฌ๋ฌธ// ํด๋กœ์ € ๋ฐ”๋”” } ์ธ๋ผ์ธ ํด๋กœ์ € (inline closure) // ์ฝ”๋“œ๋ฅผ ์ƒ๋žตํ•˜์ง€ ์•Š๊ณ  ํด๋กœ์ € ๊ตฌ๋ฌธ ์”€, ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜ ๋‚ด์— ํด๋กœ์ €๊ฐ€ ๊ทธ๋Œ€๋กœ ๋“ค์–ด๊ฐ„ ํ˜•ํƒœ // => ์ธ๋ผ์ธ ํด๋กœ์ € getStudyWithMe(study: { () -> () in print("์ฃผ๋ง์—๋„ ๊ณต๋ถ€ํ•˜๊ธฐ") }) ํŠธ๋ ˆ์ผ๋ง ํด๋กœ์ € (trailing clo..
ยท๐ŸŒฑ SeSAC
์„œ๋ฒ„ ํ†ต์‹  ์‹œ ์…€์— ๋ณด์—ฌ์ค„ UIImage ๋ณ€ํ™˜ ์‹œ์  urlString โ–ถ๏ธ url โ–ถ๏ธ image url๋กœ ๋ฐ”๊พธ๊ณ  ๋˜๋Š” image๋กœ ๋ฐ”๊พธ๋Š” ๊ณผ์ •์„ ์–ด๋””์—์„œ ์ง„ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์„๊นŒ? ์„œ๋ฒ„ ํ†ต์‹  ์‹œ์ ์—์„œ ํ• ์ง€ => ์‹œ๊ฐ„์ด ์˜ค๋ž˜๊ฑธ๋ฆฌ๊ณ , ์‚ฌ์šฉ์ž๊ฐ€ ๋ณด์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋Š” ์ •๋ณด์— ๋Œ€ํ•ด์„œ๋„ ์ž‘์—…์„ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์–ด์„œ ๋น„ํšจ์œจ์  ์…€์—์„œ ์ฒ˜๋ฆฌํ• ์ง€ => ์กฐ๊ธˆ ๋” ์ ์ ˆํ•ด๋ณด์ธ๋‹ค. ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์„œ๋ฒ„ ํ†ต์‹ ์„ ์…€์—์„œ ํ•  ๊ฒฝ์šฐ ์…€์ด ๊บผ๋‚ด์งˆ ๋•Œ๋งˆ๋‹ค ์š”์ฒญ์ด ๋“ค์–ด๊ฐ€ call ์ˆ˜๊ฐ€ ์ฆ๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค. Alamofire์˜ ๋ฐ์ดํ„ฐ ๋ฐ›์•„์˜ค๋Š” ๋ฉ”์„œ๋“œ(Response Handler) // Response Handler - Unserialized Response func response(queue: DispatchQueue = .main, completionHa..
ยท๐ŸŒฑ SeSAC
์ธ์ฆํ‚ค์™€ gitignore ํ•ญ์ƒ gitignore๋Š” ๋จผ์ € ์ฒ˜๋ฆฌํ•˜์ž. ์ดํ›„์— ์ธ์ฆํ‚ค๋ฅผ ์ฒ˜๋ฆฌํ•˜๋ ค๊ณ  ํ•˜๋ฉด commit์—๋„ ๋‚จ์•„์žˆ๊ณ , ์ด์ „ ๊ธฐ๋ก์— ๋‚จ์•„์žˆ์œผ๋ฏ€๋กœ ๋ฒˆ๊ฑฐ๋กญ๋‹ค. ํ”„๋กœ์ ํŠธ ๋‚ด์—์„œ empty ํŒŒ์ผ ์ƒ์„ฑ ํ›„ ํ”„๋กœ์ ํŠธ ๋ฐ”๋กœ ๋ฐ‘์— .gitignore ์ƒ์„ฑ ๊ฐ€๋Šฅ ํ˜‘์—… ์‹œ์—๋Š” property list, configuration์„ ์ด์šฉํ•˜๋Š” ์‹์œผ๋กœ๋„ ์ธ์ฆํ‚ค๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค. ์ˆจ๊ฒจ์•ผ ํ•˜๋Š” ํŒŒ์ผ์ด ๋งŽ์œผ๋ฉด public repository๊ฐ€ ์ ํ•ฉํ•œ์ง€๋ถ€ํ„ฐ ํŒ๋‹จํ•˜์ž. gitignore.io์— ๊ฐ€๋ฉด ์‰ฝ๊ฒŒ ํŒŒ์ผ์— ๋“ค์–ด๊ฐˆ ๋‚ด์šฉ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ์ˆจ๊น€ํŒŒ์ผ๋กœ ์ž˜ ๋“ฑ๋กํ•˜๋ฉด ํ”„๋กœ์ ํŠธ ๋‚ด์˜ ํŒŒ์ผ ์˜†์— A(์ถ”๊ฐ€)/M(์ˆ˜์ •) ๋งˆํฌ๊ฐ€ ๋œจ์ง€ ์•Š๋Š”๋‹ค. Type Inference์™€ Type Annotation ์†๋„ ์ฐจ์ด Type Annotation์„ ์ด์šฉํ•˜๊ธฐ..
ยท๐ŸŒฑ SeSAC
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 ์‹œ์ ์— ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ..
ยท๐ŸŒฑ SeSAC
ํ”„๋กœํ† ์ฝœ๊ณผ String(describing: _)์‚ฌ์šฉํ•ด์„œ ๋ฆฌํ„ฐ๋Ÿดํ•œ ๊ฐ’ ๋œ์–ด๋‚ด๊ธฐ ๊ทธ ๋™์•ˆ identifier ๊ฐ’์„ ์“ฐ๋Š” ๊ณณ์ด ์ •๋ง ๋งŽ์•˜๋‹ค. ViewController์™€ TableViewCell, CollectionViewCell ๋“ฑ์—์„œ ๋งŽ์ด ์‚ฌ์šฉํ–ˆ์—ˆ๋‹ค. ๋งค ํด๋ž˜์Šค์—์„œ ํ•˜๋“œ์ฝ”๋”ฉ๋œ ๋ฌธ์ž์—ด ๊ฐ’์„ ๋„ฃ๋Š” ๋Œ€์‹  ํ”„๋กœํ† ์ฝœ์„ ์ด์šฉํ•˜๋ฉด ๋ถˆํŽธํ•จ๊ณผ ๋ฐ˜๋ณต์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค. protocol Reusable: Anyobject { static var reuseidentifier: String { get } } ๋‹ค์Œ๊ณผ ๊ฐ™์ด extension์—์„œ ํ”„๋กœํ† ์ฝœ์„ ์ฑ„ํƒํ•˜๊ฒŒ ๋˜๋ฉด, ์ด์ œ reuseidentifier๋ฅผ ํŽธํ•˜๊ฒŒ ์ ‘๊ทผํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. extension UIViewController: ReusableViewProtocol { /..
ยท๐ŸŒฑ SeSAC
Notifications ๊ธฐ๋ณธ์ ์œผ๋กœ ์•Œ๋ฆผ์— ๋Œ€ํ•œ ํ—ˆ์šฉ ๊ถŒํ•œ์ด ํ•„์š”ํ•จ. Local Notifications ๋””๋ฐ”์ด์Šค๋‚ด์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ์•Œ๋ฆผ์„ ๋ฐ›๋Š” ๋ฐฉ์‹ ๊ฐœ์ธ์ด ํ˜ผ์ž ๊ด€๋ฆฌํ•˜๋Š” ์•ฑ Xcode ๋‚ด์— ๋ฐ์ดํ„ฐ, ์ •๋ณด๋ฅผ ์ €์žฅํ•ด๋†“๊ณ  ์•Œ๋ฆผ์„ ๋ณด๋ƒ„ Push Notifications ์„œ๋ฒ„์—์„œ ์•Œ๋ฆผ์„ ๋ฐ›์Œ ์–ด๋–ค ์‹œ๊ฐ„์— ์–ด๋–ค ๋‚ด์šฉ์ด ์˜ฌ์ง€ ๋ชจ๋ฅด๋Š” ์ƒํƒœ ๊ถŒํ•œ ํ—ˆ์šฉํ•œ ๊ฒฝ์šฐ iOS ์•Œ๋ฆผ ์„ผํ„ฐ์— ํ‘œ์‹œ ์•ฑ ์žฌ์‚ฌ์šฉ๋ฅ (Retention)์— ๊ธฐ์—ฌ ์•ฑ์ด ์ข…๋ฃŒ๋œ ๊ฒฝ์šฐ์—๋„ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ƒˆ๋กœ์šด ์ •๋ณด๋ฅผ ํ‘œ์‹œ Local vs Remote Local Xcode ๋‚ด์— ๋ฌธ๊ตฌ๊ฐ€ ๋ฏธ๋ฆฌ ์ €์žฅ๋˜์–ด ์žˆ๋Š” ์ƒํƒœ ์•ฑ ๋‚ด์—์„œ ์ปจํ…์ธ ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ , ์ปจํ…์ธ ๊ฐ€ ๊ณ ์ •๋˜์–ด ์žˆ๋Š” ์ƒํƒœ Remote ์‹œ๊ฐ„๊ณผ ์ปจํ…์ธ  ๋ชจ๋‘ ๋‹ค์ด๋‚˜๋ฏนํ•œ ์ƒํƒœ ๊ถŒํ•œ -> ์š”์ฒญ -> ์•Œ๋ฆผ ๊ถŒํ•œ (Alert, Ba..
ยท๐ŸŒฑ SeSAC
์ˆ˜์—… ๋“ฃ๊ณ  ์•„์ดํŒจ๋“œ์—๋Š” ์ƒ๊ฐ์ด๋‚˜ ๋‚ด์šฉ๋“ค ๋‹ค ๊ธฐ๋กํ•ด๋†“๋Š”๋ฐ, ์ด๊ฑธ ์ปดํ“จํ„ฐ๋กœ ์˜ฎ๊ธฐ๋Š” ๊ฒŒ ์™œ ์ด๋ฆฌ ํž˜๋“  ๊ฑด์ง€.. ๊ทธ๋ ‡๋‹ค๊ณ  ๋ฐ”๋กœ ์ปดํ“จํ„ฐ์— ์ ์ž๋‹ˆ ์–ด์ƒ‰ํ•˜๊ณ .. ์ข€ ๋” ๋…ธ๋ ฅํ•ด๋ด์•ผ๊ฒ ์–ด์š”.. ๋ฐ€๋ฆฐ TIL ์—…๋กœ๋“œ ํ•ด๋ณผ๊ฒŒ์š”! ใ…Žใ…Ž Protocol(ํ”„๋กœํ† ์ฝœ) ํ”„๋กœํ† ์ฝœ์€ ๊ทœ์น™์ด๋‹ค. ์‹ค์งˆ์ ์ธ ๊ตฌํ˜„์„ ๋‹ด๋‹นํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค. ๊ตฌํ˜„์€ ํ”„๋กœํ† ์ฝœ์„ ์ฑ„ํƒํ•œ ์ชฝ์—์„œ ๋‹ด๋‹นํ•œ๋‹ค. ๊ฐ€์žฅ ํฐ ์žฅ์  ์ค‘ ํ•˜๋‚˜๊ฐ€ ํ˜•ํƒœ๋ฅผ ๊ฐ•์ œํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋ถ€๋ถ„์ด๋‹ค. ํŒŒ์ผ๋งˆ๋‹ค ์ž‘์„ฑํ•ด์•ผ ํ•˜๋Š” ๋ฉ”์„œ๋“œ ๋ช…์ด๋‚˜ ํ”„๋กœํผํ‹ฐ ๋ช… ๋˜๋Š” ๊ตฌํ˜„๋˜์–ด์•ผ ํ•˜๋Š” ๋ถ€๋ถ„์— ๋Œ€ํ•œ ๊ฐ•์ œ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ผ๊ด€์ ์ธ ํ˜•ํƒœ๋ฅผ ์œ ์ง€ํ•  ๋•Œ ์œ ์šฉํ•˜๋‹ค. ํ”„๋กœํ† ์ฝœ๊ณผ ๋ถ€๋ชจ ํด๋ž˜์Šค์™€ ๊ฐ€์žฅ ํฐ ์ฐจ์ด๋ผ๊ณ  ํ•œ๋‹ค๋ฉด ํด๋ž˜์Šค๋Š” ๋‹จ์ผ ์ƒ์†๋งŒ ๊ฐ€๋Šฅํ•œ ๋ฐ˜๋ฉด์—, ํ”„๋กœํ† ์ฝœ์€ ๋‹ค์ค‘ ์ฑ„ํƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์ ์ด๋‹ค. ๋‹ค์Œ ๊ธ€ Taehyeon-Kim..
ยท๐ŸŒฑ SeSAC
๋ทฐ์™€ ๋ฐ์ดํ„ฐ ๊ด€๋ จํ•œ ๊ฒƒ์€ ๋ถ„๋ฆฌํ•˜๋„๋ก ํ•˜์ž. ์—ญํ• ์„ ๋ถ„๋ฆฌํ•ด์„œ ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•˜์ž. UIViewController + UITableView UITableViewController๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ์–ผ๋งˆ๋‚˜ ํŽธํ• ๊นŒ? ๊ทธ๋Ÿฌ๋‚˜ UITableViewController๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ์ข€ ๋” ์œ ์—ฐํ•œ ํ™”๋ฉด ๊ตฌ์„ฑ์ด ์–ด๋ ต๋‹ค. ์ด๋ฏธ ํ™”๋ฉด ์ „์ฒด๊ฐ€ ํ…Œ์ด๋ธ”๋ทฐ๋กœ ๊ฐ€๋“ ์ฐจ ์žˆ์–ด ์˜์—ญ์˜ ํฌ๊ธฐ ์กฐ์ •์ด ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. (์ด ๋ง์ธ ์ฆ‰์Šจ RootView๊ฐ€ UITableView๋ผ๋Š” ๊ฒƒ์ด๋‹ค.) ๊ทธ๋ ‡๊ธฐ์— TableView๋งŒ ๋”ฐ๋กœ ์˜ฌ๋ ค์„œ ํ™”๋ฉด์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋” ๋งŽ๋‹ค. TableView ์ƒ์„ฑ + ์•„์›ƒ๋ › ์—ฐ๊ฒฐ TableViewCell ์ƒ์„ฑ (ํ”„๋กœํ† ํƒ€์ž… ์…€, XIB ์ด์šฉ) + ์…€ ํด๋ž˜์Šค ์—ฐ๊ฒฐ + ์•„์›ƒ๋ › ์—ฐ๊ฒฐ TableView์— ํ•„์š”ํ•œ ํ”„๋กœํ† ์ฝœ ์„ ์–ธ..
taeeekki
'TIL' ํƒœ๊ทธ์˜ ๊ธ€ ๋ชฉ๋ก (3 Page)