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