[iOS] NSCache์ ์บ์ ์ ์ฑ ๋ฏ์ด๋ณด๊ธฐ
NSCache
์ค๋์ ๊ฐ๋ฒผ์ด ์ด๋ฏธ์ง ์บ์์ ์์ฃผ ์ฌ์ฉํ์ง๋ง, ๋ฌด์ฌ์ฝ ์ฌ์ฉํด์ค๊ธฐ๋ง ํ๋ NSCache๊ฐ ๋ด๋ถ์ ์ผ๋ก ์ด๋ค ์ ์ฑ ์ ๋๊ณ ์๋์ง ํ์ธํด๋ณด๋ ค๊ณ ํฉ๋๋ค.
๊ณต์๋ฌธ์์๋ NSCache๊ฐ ๋ค์ํ ์๋ ์ ๊ฑฐ ์ ์ฑ (auto-eviction policy)์ ์ฌ์ฉํด์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ด๋ฆฌํ๋ค๊ณ ์๊ฐํ๊ณ ์๋๋ฐ์, ์ด๋ค ์ ์ฑ ์ ์ฌ์ฉํ๋์ง ์๋ ค์ฃผ๊ณ ์์ง๋ ์์์.
๊ทธ๋์ Foundation์ ๋ค์ด๊ฐ๋ Objective-C ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ libs-base์์ NSCache์ ์์ค์ฝ๋๋ฅผ ์ฐพ์ ์ ์์๊ณ , ์ด ์์ค์ฝ๋๋ฅผ ๋ฏ์ด๋ณด๋ ค๊ณ ํฉ๋๋ค..! ์ ๊ฑฐ Objc๋ ๋ฆฌ๋ฉ์ ์๋ฒฝํ๊ฒ ๋ชปํด์ ํ๋ฆฐ ์ ๋ณด๊ฐ ์์ ์๋ ์์ด์..! ํท๊ฐ๋ฆฌ๋ ๋ถ๋ถ์ ์ ๋ชจ๋ฅด๊ฒ ๋ค๊ณ ๋จ๊ฒจ๋๊ฒ์!
์ฝ๋๋ ์ฌ๊ธฐ์์ ํ์ธํ ์ ์์ด์! ๊ทธ๋ผ ์์ํ๊ฒ ์ต๋๋ค!
NSCache ์ปจํ ์ด๋
NSCache ๋ด๋ถ์๋ _accesses์ NSMapTable์ด ๋์ ๋๋๋ฐ์, access๋ ์บ์ํ ๊ฐ์ฒด๋ค์ ์ ์ฅํ๋ ์๋ฃ๊ตฌ์กฐ๋ก ๋ณด์ด๊ณ NSMapTable์ ํ์คํ์ง๋ ์์ง๋ง ์บ์ฑ๋ ๊ฐ์ฒด๋ฅผ key๋ฅผ ํตํด ๋น ๋ฅด๊ฒ ์ฐพ์ ์ ์๊ฒ ํ๊ธฐ ์ํด์ ์ฌ์ฉํ๋ ๊ฒ ๊ฐ์์.
์บ์ ๊ฐ์ฒด ์ปจํ ์ด๋
๋จผ์ NSCache ๋ด๋ถ์์ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ ๋ ์ฌ์ฉํ๋ ๊ฒ์ผ๋ก ๋ณด์ด๋ ๊ฐ์ฒด์ ์ธํฐํ์ด์ค๋ฅผ ๋ณผ๊ฒ์. object๋ผ๋ ๋ฒ์ฉ ํ์ ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์๊ณ , NSString ํ์ ์ ํค ๊ฐ์ด ์์ด์.
๊ทธ๋ฆฌ๊ณ accessCount ๋ผ๋ ๋ณ์๊ฐ ์๋๋ฐ์, ๊ต์ฒด ์ ์ฑ ์์ ํด๋น ๋ฐ์ดํฐ๊ฐ ๋ช ๋ฒ ์ฐธ์กฐ๋์๋์ง๋ฅผ ์ฌ์ฉํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
cost๋ NSCache์ api ์ค์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ฉด์ cost๋ฅผ ์ ์ฅํ ์ ์๋๋ฐ, ์ด cost๊ฐ ๊ทธ๋๋ก ์ ์ฅ๋๋ ๊ฒ ๊ฐ์์. ์ผ๋ฐ์ ์ผ๋ก ์ด cost๋ ์ฉ๋์ ์ ์ฅํด์ค๋๋ค.
๋ง์ง๋ง์ผ๋ก isEvictable์ ํด๋น ๊ฐ์ฒด๊ฐ ๊ต์ฒด ๋์์ธ์ง ํ์ธํ๋ ์ฉ๋๋ก ์ฐ์ด๊ฒ ๋ค์.
๋ฐ์ดํฐ ์ถ๊ฐ
์๋ก์ด key-value๋ฅผ ์ถ๊ฐํ๋ setObject ๋ฉ์๋๋ ๋ ์ข ๋ฅ๊ฐ ์๋๋ฐ์, cost๋ฅผ ์ฃผ์ง ์๋ ๊ฒฝ์ฐ๋ ๊ทธ๋ฅ cost๊ฐ 0์ด ๋์ด์ cost๋ฅผ ์ธ์๋ก ๋ฐ๋ ๋ฉ์๋๋ฅผ ๋ถ๋ฅด๊ณ ์์์ด์. ๊ทธ๋์ cost๊ฐ ํฌํจ๋ ์์ชฝ setObject๋ง ํ์ธํด๋ณด๋ฉด ๋ ๊ฒ ๊ฐ์์.
๋จผ์ oldObject, newObject๋ฅผ ์ค๋นํ๊ณ ๋ง์ฝ ์ฃผ์ด์ง key์ ๋ํ ๊ฐ์ฒด๊ฐ ์ด๋ฏธ ์กด์ฌํ๋ค๋ฉด ํด๋น ๊ฐ์ฒด๋ฅผ ์ญ์ ํด์ค๋๋ค.
์ด์ _evitObjectsToMakeSpaceForObjectWithCost ๋ผ๋ ๋ฉ์๋๋ฅผ ํธ์ถํ๊ฒ ๋๋๋ฐ์, ์ธ์๋ก๋ NSCache์ ๊ฐ์ ์ถ๊ฐํ ๋ ์ ๋ฌ๋ฐ์ cost๊ฐ ๊ทธ๋๋ก ์ ๋ฌ๋ฉ๋๋ค. ์ค์ ๋ก ์บ์ ์ ์ฑ ์ด ์ํ๋๋ ๋ถ๋ถ์ด ์ด๊ณณ์ผ ํ ๋ฐ ๋จ์ ์ฝ๋๋ฅผ ๋ง์ ๋ณด๊ณ ํ์ธํด๋ณผ๊ฒ์!
๊ทธ ์ดํ์ ์๋ก์ด CachedObject ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด์ ํค์ ๊ฐ์ ๋ชจ๋ RETAIN ํฉ๋๋ค. NSCache์ key์ value์ ๊ฐ ํ์ ์ด ํ์ฉ๋์ง ์๋ ์ด์ ๊ฐ ์ฌ๊ธฐ์ ์์๋ค์..!
๊ทธ๋ฆฌ๊ณ discardableContent๋ฅผ ์ฑํํ๋ค๋ฉด isEvictable์ ๋งํนํด๋ก๋๋ค.
๋ง์ง๋ง์ผ๋ก newObject๋ฅผ ์บ์์ ์ ์ฅํ๊ณ ์ ์ฒด cost๋ ์ ๋ฐ์ดํธํ๋ฉด ์๋ก์ด ํค-๊ฐ ์์ NSCache์ ์ถ๊ฐํ๋ ๊ฒ์ด ์๋ฃ๋ฉ๋๋ค.
๋ฐ์ดํฐ ์ฝ๊ธฐ
๋ฐ์ดํฐ๋ฅผ ์ฝ์ ๋๋ key์ ๋ํ ๊ฐ์ฒด๊ฐ ์๋์ง ํ์ธํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ง์ฝ ์๋ค๋ฉด ๋ฐํํ๊ธฐ ์ ์ accessCount๋ฅผ ์ฆ๊ฐ์ํค๊ณ , totalAccesses๋ฅผ ์ฆ๊ฐ์์ผ์ ํด๋น ๊ฐ์ฒด์ ๋ํ ์ฐธ์กฐ ํ์์ ์ ์ฒด ์ฐธ์กฐ ํ์๋ฅผ ์ ๋ฐ์ดํธํด์ฃผ๊ณ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ฐ์ฒด๋ฅผ ๋ฆฌ์คํธ์ ๊ฐ์ฅ ๋ง์ง๋ง์ผ๋ก ์ฎ๊ฒจ์ ๊ฐ์ฅ ์ต๊ทผ์ ์ฌ์ฉํ ๊ฐ์ฒด๊ฐ ์บ์ ์๋ฃ๊ตฌ์กฐ์ ๊ฐ์ฅ ๋ง์ง๋ง์ ์์นํ ์ ์๋๋ก ํ๊ณ ์์ด์.
๋ฐ์ดํฐ ์ญ์
์ด์ ์ค์ ๋ก ์บ์ ์ ์ฑ ์ด ์ด๋ป๊ฒ ์ํ๋๋์ง, ์๊น ์ง๋์ณค๋ _evitObjectsToMakeSpaceForObjectWithCost ๋ฉ์๋๋ฅผ ํ์ธํด๋ณด๊ฒ ์ต๋๋ค!
๋จผ์ ์ฃผ์์ด ์์ด์ ํด์ํด๋ณด๊ณ ์ง๋๊ฐ๊ฒ์. ์ฌ๊ธฐ์ ๊ตฌํ๋ ์ ์ฑ ์ ๊ฐ๋จํ LRU, LFU์ ํผํฉํ์ด๋ผ๊ณ ํฉ๋๋ค. LRU๋ ๊ฐ์ฅ ์ค๋์ ์ ์ฐธ์กฐํ ๊ฐ์ฒด๋ฅผ ์ ํํ๋ ๊ต์ฒด ์ ์ฑ ์ด๊ณ , LFU๋ ๊ฐ์ฅ ์ฐธ์กฐ๋ ํ์๊ฐ ์ ์ธ ๊ฐ์ฒด๋ฅผ ์ ํํ๋ ๊ต์ฒด ์ ์ฑ ์ด์์. NSCache๋ ์ด ๋์ ์ ์ ํ ์์ด ์ฌ์ฉํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
NSCache ๋ฌธ์์์ ์ ํ์ด ์ ์ฑ ์ด ๋ฐ๋ ์ ์๋ค๊ณ ๋งํ๊ณ ์๋ค๊ณ ํด์. ๊ทธ๋ฐ ๋ด์ฉ์ด ์์๋ ์ถ์ด์ ํ์ธํด๋ดค๋๋,
๋์์๊ธด ํ๋ค์..ใ ใ ๊ทธ๋์ ์ดํ์๋ ์ถ๊ฐ์ ์ธ ์ ์ฑ ์ ๊ฐ์ง class๊ฐ ๋ค๋ฅธ ๋ฉ์ปค๋์ฆ์ด๋ ์บ์์ ๋ํด ์๊ธธ ์๋ ์๋ค๊ณ ํฉ๋๋ค.
์ด๊ฑด ํฌ๊ฒ ์ค์ํ ๋ด์ฉ์ ์๋ ๊ฒ ๊ฐ๊ณ , LRU + LFU๊ฐ ์ด๋ป๊ฒ ํ์ด๋ธ๋ฆฌ๋ ๋๊ณ ์๋์ง๋ฅผ ์ฃผ์ ๊น๊ฒ ๋ด์ผ ํ ๊ฒ ๊ฐ์์. ํจ์ ๋ฐ๋๊ฐ ์ข ๊ธธ์ด์ ์กฐ๊ธ์ฉ ๋์ด์ ํ์ธํด๋ณผ๊ฒ์.
๋จผ์ spaceNeeded์ count ๋ณ์๊ฐ ์์ต๋๋ค. ์ผ๋ง๋ ๋ง์ ๊ณต๊ฐ์ด ํ์ํ์ง ๊ณ์ฐํด ์ ์ฅํ๋ ๋ณ์์ ํ์ฌ ์บ์์ ์ ์ฅ๋ ๊ฐ์ฒด์ ๊ฐ์๋ฅผ ์ ์ฅํ๋ ๋ณ์๋ก ๋ณด์ ๋๋ค.
์๋์ ์๋ ์กฐ๊ฑด๋ฌธ์ ์กฐ๊ฑด์ costLimit์ด 0๋ณด๋ค ํฌ๊ณ , totalCost์ ์ฃผ์ด์ง cost๋ฅผ ๋ํ์ ๋ costLimit๋ณด๋ค ํฐ์ง ํ์ธํ๋ ์กฐ๊ฑด์ธ๋ฐ์, ๊ฒฐ๊ตญ cost ์ ํ์ด ์๋ ์ํฉ์์ ํ์ฌ ์๋ก ์ถ๊ฐํ๋ ค๋ ๊ฐ์ฒด์ cost๋ฅผ ๋ํ์ ๋ ์ ํ์ ๋์ด์ ๋ค๋ฉด ์ผ๋ง๋งํผ์ ์ฉ๋์ ํ๋ณดํด์ผ ํ๋์ง ๊ณ์ฐํ๋ ์กฐ๊ฑด๋ฌธ์ ๋๋ค.
๊ทธ ์๋์ ์๋ ์กฐ๊ฑด๋ฌธ์์๋ ๊ธฐ์กด์ ์๋ ๊ฐ์ฒด๋ค์ ์ญ์ ํด์ผ ํ๋ ์ํฉ์ธ ์ ํ์ ๋์ด์ ๊ฒฝ์ฐ๋ฅผ ํ์ธํ๊ณ ์บ์ ์ ์ฑ ์ ์ํํ๊ณ ์์ต๋๋ค.
๊ธฐ์กด ๊ฐ์ฒด๋ฅผ ํ๋ ์ง์ฐ๊ณ , ์๋ก์ด ๊ฐ์ฒด๋ฅผ ์ถ๊ฐํด์ผ ํ๋ค๋ฉด, ์ ์ฝ๋๋ฅผ ์ํํฉ๋๋ค. ๋จผ์ ํ์ฌ ์บ์์ ์๋ ๊ฐ์ฒด๋ค์ด ๊ฐ์ง ์ฐธ์กฐ ํ์์ ํ๊ท ์ ๊ตฌํ๊ฒ ๋ฉ๋๋ค. 0.2๋ฅผ ๊ณฑํ๊ณ 1์ ๋ํ๋ ๊ฑด ์ ํ๋์ง ํ์คํ์ง ์์ง๋ง, ํ์ดํผ ํ๋ผ๋ฏธํฐ์ฒ๋ผ ํ๋๋ ๊ฒ ์๋๊น ์ถ์ด์..
evictsObjectsWithDiscardedContent๋ ๋ฌธ์์์ ํ์ธํ ์ ์์์ด์.
Bool๊ฐ์ ๋ฐํํ๊ณ ํ์ฌ ์บ์๊ฐ ์ด๋ฏธ ์ฝํ ์ธ ๊ฐ ๋ฒ๋ ค์ง ๊ฐ์ฒด๋ฅผ ์๋์ผ๋ก ์ญ์ ํ๋์ง ํ์ธํ๊ณ ์์ต๋๋ค. ๋ง์ฝ ๊ทธ๋ ๋ค๋ฉด evictedKeys์ ๋ฐฐ์ด์ ๋ง๋ค์ด์ ์ ์ฅํ๊ณ ์์ด์.
๋ค์ ๋ผ์ธ๋ถํฐ๋ ๊ธด while๋ฌธ์ด ์งํ๋๋๋ฐ์, ๋ฐ๋ณต์ ์กฐ๊ฑด์ ํ์ธํ ๋ค์ ๊ฐ์ฒด๊ฐ ์์ ๋์ ๋๋ค. obj ๋ณ์์ ๊ฐ์ฒด๋ฅผ ํ๋์ฉ ๊ฐ์ ธ์ค๊ณ ์์ด์. ๊ฐ์ฒด๋ฅผ ๊บผ๋ด์ค๋ ๋ฆฌ์คํธ๋ ๊ฐ์ฅ ์ฐธ์กฐํ ์ง ์ค๋๋ ๊ฐ์ฒด๊ฐ ๊ฐ์ฅ ์์ ์๊ณ , ๊ฐ์ฅ ์ต๊ทผ์ ์ฐธ์กฐ๋ ๊ฐ์ฒด๊ฐ ๊ฐ์ฅ ๋ค์ ์๊ฒ ์ฃ ? ๊ทธ๋์ ์์ฐ์ค๋ฝ๊ฒ LRU๊ฐ ์ํ๋๊ณ ์๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
๋ง์ฝ ์ด ๊ฐ์ฒด์ ์ฐธ์กฐ ํ์๊ฐ ํ๊ท ์ฐธ์กฐ ํ์๋ณด๋ค ์๊ณ , ์ ๊ฑฐ๊ฐ ๊ฐ๋ฅํ๋ค๋ฉด, ํด๋น ๊ฐ์ฒด์ cost๋ฅผ 0์ผ๋ก ๋ง๋ค๊ณ , isEvictable์ NO๋ก ๋ง๋ค์ด์ ์ญ์ ํ ํ๊น์ผ๋ก ์ค์ ๋์ง ์๋๋ก ์ฒ๋ฆฌํ๊ณ ์์ต๋๋ค. LFU๋ ์ฌ๊ธฐ์ ์ฌ์ฉ๋๋ค์.
๊ทธ๋ฆฌ๊ณ discardContentIfPossible ๋ฉ์๋๋ฅผ ๋ถ๋ฅด๊ณ ์์ต๋๋ค. ์ฌ๊ธฐ์ ๊ฐ์ฒด๋ฅผ ์ญ์ ํ๋ ๊ฒ ๊ฐ์ผ๋ ์ฝ๋๋ฅผ ํ์ธํด๋ณด์ฃ .
์ง๊ธ ๋ณด๊ณ ์๋ ํ์ผ ์์์๋ ํ์ธํ ์ ์์๊ณ ๋ฌธ์์ ๋ด์ฉ์ด ์์๋๋ฐ์, ์ด ๋ฉ์๋๊ฐ ํธ์ถ๋๋ฉด accessed counter๊ฐ 0์ผ ๋ ๊ฐ์ฒด์ ์ฝํ ์ธ ๋ฅผ ์ญ์ ํ๊ฒ ๋ฉ๋๋ค. accessed counter๋ NSDiscountableContent ๋ฌธ์์ ์ ๋ฆฌ๋์ด ์์ด์.
NSDiscardableContent ๊ฐ์ฒด๋ ์ญ์ ๋ ์ ์๋ ๊ฐ์ฒด์ด๊ณ , ์ด ๊ฐ์ฒด๊ฐ ์ ์ฅ๋ ๋ฉ๋ชจ๋ฆฌ์ ์ฝ๊ธฐ ์ฐ์ฐ์ด ์ผ์ด๋๊ฑฐ๋ ์ฌ์ฉ ์ค์ผ ๋ ์นด์ดํฐ๊ฐ 1 ์ด์์ด ๋๊ณ , ์ฌ์ฉ ์ค์ด์ง ์๊ฑฐ๋ ์ญ์ ๊ฐ ๊ฐ๋ฅํ ๋๋ 0์ด ๋๋ค๊ณ ํฉ๋๋ค.
๋ง์ฝ ์นด์ดํฐ๊ฐ 0์ด ๋๋ฉด ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๊ฐ ํ์ํ ๋ ๊ฐ์ฒด๋ฅผ ์ญ์ ํด์ค ์ ์๋๋ฐ, ์ด๋ discardedContentIfPossible์ ํธ์ถํ๋ฉด ์นด์ดํฐ์ ๊ฐ์ด 0์ธ ๊ฐ์ฒด๋ฅผ ์ญ์ ํด์ค๋ค๊ณ ํฉ๋๋ค.
๊ทธ๋์ ์ง๊ธ ์ ํ๋ ๊ฐ์ฒด๊ฐ ์ฌ์ฉ ์ค์ด ์๋๋ผ๋ฉด ํด๋น ๊ฐ์ฒด๋ฅผ ์ ๊ฑฐํ๊ณ ์๋ก์ด ๊ฐ์ฒด๋ฅผ ์บ์์ ์ถ๊ฐํ๊ธฐ ์ํด์ discardedContentIfPossible์ ํธ์ถํด์ฃผ๋ ๊ฒ์ด์ฃ .
์ญ์ ๊ฐ ๋์๋ค๋ฉด, isContentDiscarded๋ฅผ ํตํด ์กฐ๊ฑด๋ฌธ ๋ธ๋ก ์์ผ๋ก ์งํํ๊ฒ ๋ฉ๋๋ค.
๋จผ์ ์ญ์ ํ ๊ฐ์ฒด์ cost๋ฅผ ์ ์ฅํด ๋๊ณ ๊ฐ์ฒด์ cost๋ฅผ 0์ผ๋ก ๋ง๋ ๋ค์, isEvictable์ NO๋ก ๋ง๋ค์ด์ ์ด ๊ฐ์ฒด๊ฐ ๋ค์ ์ ํ๋์ง ์๋๋ก ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ฐ์ฒด์ ์ฝํ ์ธ ๋ฅผ ์ญ์ ํ ํ์ ๊ทธ ํค ๊ฐ์ evictedKeys์ ์ ์ฅํฉ๋๋ค.
๊ทธ ์ดํ์ ์ ์ฒด cost์์ cost๋ฅผ ๋นผ์ฃผ๊ณ ๋ฐฉ๊ธ ์ ๊ฑฐํ ๊ฐ์ฒด์ cost๊ฐ ์์์ ๊ณ์ฐํ๋ costNeeded๋ณด๋ค ํฌ๋ค๋ฉด ๋ฐ๋ณต์ ์ค๋จํ๊ณ , ์๋ค๋ฉด ์์ง ํ์ํ ๋งํผ ๊ณต๊ฐ์ด ํ๋ณด๋์ง ์์๊ธฐ ๋๋ฌธ์ ๊ฐ์ ์์ ์ ๋ค์ ๊ฐ์ฒด์ ๋ํด ๋ฐ๋ณตํ๊ฒ ๋ฉ๋๋ค.
์ด๋ ๊ฒ ํ๋ฉด evicted์ ์ฝํ ์ธ ๊ฐ ์ญ์ ๋ ๊ฐ์ฒด๋ค์ ํค ๊ฐ๋ค์ด ๋ชจ์ด๊ฒ ์ฃ ?
๊ทธ๋์ ๋ง์ง๋ง์๋ evictedKeys์ ์ ์ฅ๋ ํค ๊ฐ๋ค์ ๋ชจ๋ ๊บผ๋ด์ ์บ์์ ์ ์ฅ๋์ด ์๋ ํด๋น ํค์ ๋ํ ๊ฐ์ฒด๋ฅผ ๋ชจ๋ ์ ๊ฑฐํฉ๋๋ค.
๋ง๋ฌด๋ฆฌ
์ด๋ ๊ฒ ํด์ NSCache์ ๋ด๋ถ๋ฅผ ํ์ธํด๋ดค๋๋ฐ์, ์ ๋ฆฌํ์๋ฉด NSCache๋ LRU์ LFU๋ฅผ ํผํฉํด์ ์ ์ฑ ์ ์ฌ์ฉํ๊ณ ์์์ต๋๋ค. ๊ฐ์ฅ ์ค๋์ ์ ์ฐธ์กฐ๋ ๊ฐ์ฒด๋ฅผ ์ฐ์ ์ ์ผ๋ก ํ์ธํด๋ณด์ง๋ง, ๋ง์ฝ ๊ทธ ๊ฐ์ฒด๊ฐ ์ฐธ์กฐ๋ ํ์๊ฐ ์บ์๊ฐ ๊ฐ์ง ํ๊ท ์ฐธ์กฐ ํ์๋ณด๋ค ๋๋ค๋ฉด ๊ฝค ๋ง์ด ์ฐธ์กฐ๋ ๊ฐ์ฒด๋ผ๋ ๊ฒ์ด๊ฒ ์ฃ ? ๊ทธ๋์ ๋ค์ ๋ ์ฐธ์กฐ๋ ๊ฐ๋ฅ์ฑ์ด ์๋ค๊ณ ํ๋จํด์ ์ญ์ ๋์์ผ๋ก ์ ํ์ง ์๋ ๊ฒ์ด์ฃ .
ํ๋ง๋๋ก ๋งํด๋ณด๋ฉด NSCache์ ์ ์ฑ ์ "์ฐธ์กฐํ ์ง ๊ฐ์ฅ ์ค๋๋ ๊ฐ์ฒด ์ค์์ ์ฐธ์กฐ ํ์๊ฐ ํ๊ท ์ฐธ์กฐ ํ์๋ณด๋ค ์ ์ ๊ฐ์ฒด"๋ผ๊ณ ํ ์ ์๊ฒ ๋ค์.
ํ๋ก์ ํธ๋ฅผ ํ๋ฉด์ NSCache๋ฅผ ์ฌ์ฉํ๋ ์ผ์ด ๊ฝค ์์๋๋ฐ, ์ด๋ ๊ฒ ๋ด๋ถ์ ์ผ๋ก ์ด๋ค ์ ์ฑ ์ ์ฑํํ๊ณ ์๋์ง ์๊ฒ ๋์ด์ ๊ฝค ์๋ฏธ ์๋ ์๊ฐ์ด์์ต๋๋ค! ํน์ ์๋ชป๋ ์ ๋ณด๊ฐ ์๊ฑฐ๋ ์ด์ํ ๋ด์ฉ์ด ์๋ค๋ฉด ์๋ ค์ฃผ์ธ์! ์ ๋ ๋ค์ ๊ณ ๋ฏผํด๋ณด๊ฒ ์ต๋๋ค.
์ฝ์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค!
'๐ ์์ด-์ค-์์ค > ๐ฑ iOS ๊ฐ๋ฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[iOS] ์ฑ ์๋๋ฐ์ค์ iOS์ ํ์ผ ์์คํ (2) | 2022.01.21 |
---|---|
[iOS] ๋ฉ์ดํธ๋ฌ๋: ๋ฐ์ชฝ์ง๋ฆฌ ์ด๋ฏธ์ง ์บ์ ๊ฐ์ ํ๊ธฐ (0) | 2022.01.18 |
[iOS] view.layer์ ์ ์ฒด๋ฅผ ์ฐพ์์ (1) | 2022.01.15 |
[iOS] required init?(coder: NSCoder)์ ์ ์ฒด๋ฅผ ์ฐพ์์ (1) | 2022.01.11 |
[iOS] ๊ณต์๋ฌธ์๋ก ๊ณต๋ถํ๋ URLSession (2) | 2022.01.11 |
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote