728x90
๋ฐ˜์‘ํ˜•
[CoreData] CoreData ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋”ฉ ์ „๋žต์œผ๋กœ Main Tread Block์„ ๋ง‰์•„๋ณด์ž

1. ๋ฌธ์ œ ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ์— ํ…์ŠคํŠธ ๋ทฐ๋ฅผ ์˜ฌ๋ ค์ฃผ์„ธ์š”. ๊ทธ๋ฆฌ๊ณ  ์•ฑ์ด launch ๋œ ์ง€ 5๋ถ„ํ›„์— ๋งŒ๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋งŒ๋“ค๊ณ  ์ €์žฅํ•˜๋Š” ์ฝ”์–ด ๋ฐ์ดํ„ฐ ์—ฐ์‚ฐ์„ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. CoreDataManager๋Š” ์ด๋ ‡๊ฒŒ ๊ตฌ์„ฑ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ํ…์ŠคํŠธ๋ฅผ ํƒ€์ดํ•‘ํ•˜๋‹ค๊ฐ€ 5์ดˆ ํ›„์— CoreData ์—ฐ์‚ฐ์ด ์‹œ์ž‘๋˜๋ฉด ์•„๋ฌด๋ฆฌ ํƒ€์ดํ•‘์„ ์ž…๋ ฅํ•ด๋„ ์ž…๋ ฅ์ด ์•ˆ๋ฉ๋‹ˆ๋‹ค. UI ๋‹ด๋‹น์ธ ๋ฉ”์ธ ์“ฐ๋ ˆ๋“œ๊ฐ€ blocking ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์ด์ฃ ! CoreData ์—ฐ์‚ฐ์ด ๋๋‚˜๋ฉด ๋‹ค์‹œ ํƒ€์ดํ•‘์ด ๊ฐ€๋Šฅํ•ด์ง‘๋‹ˆ๋‹ค. ๊ทธ ์ด์œ ๋Š” ๋ฌด์—‡์ผ๊นŒ์š”...?!?!?! ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•œ viewContext๊ฐ€ main queue์—์„œ ๋™์ž‘ํ•˜๋Š” ์นœ๊ตฌ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค!! ๊ทธ๋ž˜์„œ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ์ž‘์—…์ด๋ผ๋ฉด, viewContext ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ๋ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž์˜ ํ™”๋ฉด์„ blocking ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด์ฃ !!! ..

๐Ÿ/iOS 2020. 4. 3. 18:58
[ReactorKit] ReactorKit์˜ Transform ํ•จ์ˆ˜์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž

ReactorKit๋ฌธ์„œ ๋ฅผ ๋ณด๋ฉด transform ํ•จ์ˆ˜์— ๋Œ€ํ•œ ์„ค๋ช…์ด ์žˆ์Šต๋‹ˆ๋‹ค. transform์€ mutate๋‚˜ reduce ํ•จ์ˆ˜์ฒ˜๋Ÿผ Reactor์— ๋ฐ˜๋“œ์‹œ ๊ตฌํ˜„ํ•ด์•ผํ•˜๋Š” ํ•จ์ˆ˜๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ €๋Š” ์ตœ๊ทผ์— ์•Œ์•˜๋Š”๋ฐ, ๊นŒ๋จน์ง€ ์•Š๊ฒŒ ์ •๋ฆฌํ•ด๋‘๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. Transform transform ๊ด€๋ จ ํ•จ์ˆ˜๋Š” ์ด๋ ‡๊ฒŒ ์„ธ๊ฐœ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํ•จ์ˆ˜๋“ค์„ ๊ตฌํ˜„ํ•˜์—ฌ์„œ ๋‹ค๋ฅธ observable stream๋“ค๊ณผ ๊ฒฐํ•ฉ(combine) ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ transform(mutation:) ํ•จ์ˆ˜๊ฐ€ global event stream๋ฅผ mutation stream๊ณผ ๊ฒฐํ•ฉํ•˜๋Š” ๊ฒฝ์šฐ์— ๋งŽ์ด ์“ฐ์ธ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ž˜ ์•ˆ์™€๋‹ฟ์œผ๋‹ˆ ๋” ๊ตฌ์ฒด์ ์œผ๋กœ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค...!! ๊ทธ๋Ÿฌ๊ธฐ ์œ„ํ•ด์„œ ์šฐ์„  Global State์— ๋Œ€ํ•ด์„œ ์•Œ์•„์•ผํ•ฉ๋‹ˆ๋‹ค. ..

๐Ÿ/iOS 2020. 3. 7. 03:36
[UILabel-HTML] UILabel์— HTML load ํ•˜๊ธฐ ๋˜๋Š” HTML ์ฝ”๋“œ๋ฅผ ๋บ€ ํ…์ŠคํŠธ๋ฅผ ๋„ฃ์–ด์ฃผ๊ธฐ

[1] HTML ์Šคํƒ€์ผ ๊ทธ๋Œ€๋กœ ๋กœ๋“œํ•˜๊ธฐ (with ์ปค์Šคํ…€ ์„ค์ •) UILabel์— HTML ์Šคํƒ€์ผ ๊ทธ๋Œ€๋กœ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (ํฐํŠธ๋‚˜ ์ƒ‰๊น” ๊ฐ™์€ ๊ฒƒ์„ ์ปค์Šคํ„ฐ๋งˆ์ด์ง• ํ•  ์ˆ˜ ์žˆ์Œ) ์˜ˆ๋ฅผ๋“ค์–ด ๋˜๋Š” ํƒœ๊ทธ๋กœ ๊ฐ์‹ธ์ง„ ๊ฒƒ์„ ๋ณผ๋“œ์ฒ˜๋ฆฌ ํ•ด์ฃผ๊ณ  html ํƒœ๊ทธ๋“ค์„ ์ง€์›Œ์ฃผ๊ณ  html entity ๋“ค์„ ๋””์ฝ”๋”ฉํ•ด์ค๋‹ˆ๋‹ค. (html entityํ‘œ = ์˜์–ด๋ฒ„์ „ ๋ฐ ํ•œ๊ธ€๋ฒ„์ „) ์ €๋Š” css style์„ ์ฐธ๊ณ ํ•ด์„œ extension์„ ๋งŒ๋“ค์—ˆ๊ณ  ์ด๋Ÿฐ์‹์œผ๋กœ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋Œ๋ ค๋ณด๋ฉด ์ด๋ ‡๊ฒŒ ์Šคํƒ€์ผ์ด ์ ์šฉ๋˜๊ณ  + ์œผ๋กœ ์ธ์ฝ”๋”ฉ๋˜์—ˆ๋˜ + ๋„ ๋””์ฝ”๋”ฉ๋˜์–ด์„œ ๋‚˜์˜ต๋‹ˆ๋‹ค..!! ์ฐธ๊ณ ๋กœ ์ €๋Š” paragraph ์Šคํƒ€์ผ๋งŒ ์ •์˜ํ•ด์ค˜์„œ html์— h1 ๊ฐ™์€ ํƒœ๊ทธ๊ฐ€ ์žˆ์œผ๋ฉด ์•ˆ๋จนํž ๊ฑฐ์—์š”..! css๋ฌธ์„œ๋ณด๋‹ˆ๊นŒ h1 ์Šคํƒ€์ผ์„ ๋”ฐ๋กœ ์ •์˜ํ•ด์ฃผ๋”๋ผ๊ตฌ์š”...!+! ํ•˜์ง€๋งŒ ์ง€๊ธˆ ..

๐Ÿ/iOS 2020. 2. 20. 23:43
[URLSession] URLSession๊ณผ URLSessionDataTask

iOS์—์„œ ์„œ๋ฒ„์™€ ํ†ต์‹ ํ• ๋•Œ ์ฃผ๋กœ Alamofire๋ฅผ ๋งŽ์ด ์”๋‹ˆ๋‹ค. ์–ผ๋งˆ์ „ ์ €์˜ ๋ธ”๋กœ๊ทธ ์ฒซ๊ธ€์„ ์ฐพ์•„๋ดค๋Š”๋ฐ, Alamofire์™€ ๊ด€๋ จ๋œ ๋‚ด์šฉ์ด๋”๋ผ๊ตฌ์š”..! ๐Ÿ˜ฑ ์ด๋ ‡๊ฒŒ Alamofire๋Š” iOS ์‹œ์ž‘ํ• ๋•Œ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ์“ฐ๋Š” ๋„คํŠธ์›ค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์•„์š” ํ•˜์ง€๋งŒ Alamofire ๋ฅผ ์•ˆ์“ฐ๋ฉด ๋ณดํ†ต URLSession.shared.dataTask์„ ํ†ตํ•ด ์ด๋Ÿฐ์‹์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. Alamofire์˜ ๋‚ด๋ถ€๋ฅผ ์‚ดํŽด๋ณด๊ธฐ์ „์—, URLSession๊ณผ URLSessionDataTask์— ๋Œ€ํ•ด์„œ ์‚ดํŽด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค :-) URLSession URLSession ์€ ํŠน์ •ํ•œ URL๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ์—…๋กœ๋“œํ•˜๊ธฐ ์œ„ํ•œ API๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ด€๋ จ Delgegate๋Š” URLSessionDelega..

๐Ÿ/iOS 2020. 2. 3. 11:36
[DI] DI Tree, DI Graph (์˜์กด์„ฑ ํŠธ๋ฆฌ, ์˜์กด์„ฑ ๊ทธ๋ž˜ํ”„)๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•

์ˆ˜์—ด๋‹˜์€ ์˜์กด์„ฑ ๊ทธ๋ž˜ํ”„, ์šฐ๋ฒ„(RIBs)์—์„œ๋Š” ์˜์กด์„ฑ ํŠธ๋ฆฌ ๋ผ๋Š” ์šฉ์–ด๋ฅผ ์ฃผ๋กœ ์“ฐ์‹œ๋˜๋ฐ ๊ฐ™์€ ์šฉ์–ด์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์˜์กด์„ฑ ํŠธ๋ฆฌ๋ž€ ์ด๋ ‡๊ฒŒ ์˜์กด ๊ด€๊ณ„์ด์ง€๋งŒ ํฉ์–ด์ ธ์žˆ๋Š” ์•ฑ ๋‚ด์˜ ์ƒํƒœ๋“ค ํ˜น์€ ํด๋ž˜์Šค๋“ค์„ ์ด๋ ‡๊ฒŒ ์˜ˆ์œ ํŠธ๋ฆฌํ˜•ํƒœ๋กœ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ๋ชจ๋“  ํด๋ž˜์Šค๊ฐ€ ์˜์กด์„ฑ ํŠธ๋ฆฌ์— ์†ํ•˜๊ฒŒ ๋˜๋ฉด Unit Test๋„ ํŽธํ•˜๊ณ (Stub์„ ์ฃผ์ž…ํ•ด์ฃผ๊ธฐ ํŽธํ•˜๋‹ˆ๊นŒ) Layering๋„ ํ™•์‹คํ•˜๊ฒŒ ๋˜์–ด์„œ ๊ฐ ํด๋ž˜์Šค๋Š” ์ž์‹ ์ด ์•Œ์•„์•ผํ•  ๋ฐ์ดํ„ฐ๋“ค๋งŒ ๋”ฑ ์•Œ๊ฒŒ ๋˜๋Š” ์•„๋ฆ„๋‹ค์šด ๊ทธ๋ฆผ์ด ํŽผ์ณ์ง‘๋‹ˆ๋‹ค. iOS์—์„œ ์ด๋Ÿฐ ์˜์กด์„ฑ ๊ทธ๋ž˜ํ”„๋ฅผ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๋ฐฉ๋ฒ•(๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ)๋ฅผ ์ •๋ฆฌํ•ด๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. [1] RIBs ์ฒœ์žฌ ์šฐ๋ฒ„๊ฐ€ ๋งŒ๋“  RIBs....!! (๊ฐ•์ œ) ํ”„๋กœํ† ์ฝœ ์ง€ํ–ฅ RIBs์„ ๋„์ž…ํ•ด์„œ ์ปดํŒŒ์ผ ์—๋Ÿฌ๋ฅผ ์ญ‰์ญ‰ ํ•ด๊ฒฐํ•˜๋ฉด์„œ ์ฝ”๋”ฉํ•ด๊ฐ€๋ฉด ์•„๋ฆ„๋‹ค์šด RIB ..

๐Ÿ/iOS 2020. 1. 17. 21:58
๊ณต์ง€์‚ฌํ•ญ
Total
256,740
Today
836
Yesterday
971
๋งํฌ
«   2021/06   »
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30      
๊ธ€ ๋ณด๊ด€ํ•จ