<原創(chuàng)>
需求:
1.購物車緩存商品勾選數(shù)量.(這一個需求當然也是我自己加的...).
限制:
1.時間不允許采用數(shù)據(jù)庫,或者其他持久化方式(當然是我懶...).
實現(xiàn):
接下來 貼出要使用到的演示代碼,和實現(xiàn)代碼.
這里調(diào)用我傳入的是 &data 因為&是取地址嘛,具體傳&標示什么意思有不明白的可以回去讀讀C我在這就不過多解釋了,不是主題.(其實我也說不明白!).
這里是關(guān)鍵的實現(xiàn)部分了.
原理:
實現(xiàn)原理其實特別簡單,從前有一個單例, 單例里面有一個
NSMutableDictionary
這個 NSMutableDictionary 就是我們用來做緩存的工具,其實我有試過NSCache為什么用這個?(可能是用這個看起來比較牛逼).
但是NSCache 雖然會有一些好處,但是給我項目帶來的弊端也是明顯的,它是apple提供的緩存策略,可以限制緩存 數(shù)量,或者限制緩存的 容量.但是如果限制了,在內(nèi)存較高的時候釋放一部分緩存.當前控制器如果還在引用此緩存當中的對象 那么對象已經(jīng)被釋放了,所以很結(jié)果尷尬了.(當然這個問題是可以解決的,暫時先不去管它).因為 其實他們使用起來都是差不多的,原理也類似.
真正的原理:
1.第一次請求數(shù)據(jù),緩存到 cache 中,然后每次我們增加某一個商品數(shù)量,其實修改的是cache當中單條數(shù)據(jù)的數(shù)量.
2.第二次請求數(shù)據(jù),去Cache 中查找是否存在此次緩存,如果存在,那么替換當前請求的返回數(shù)據(jù),(當然這里可以直接獲取緩存數(shù)據(jù),網(wǎng)絡(luò)請求都不用跑了.真是牛逼,流量都省了.真是個天才).
3.第三次請求數(shù)據(jù),去Cache中查找數(shù)據(jù),如果不存在 那么-> 1步.
其實真正起作用的代碼不到10行,原理非常簡單,會iOS 的都能讀懂.
轉(zhuǎn)載請注明出處,喜歡請給我個星,鼓勵我繼續(xù)研究奇淫技巧.!
如果有新的好點子,改進歡迎指正.交流技術(shù),分享裝13技巧.