YYCache 原始碼分析(一)

發表於2016-06-11

iOS 開發中總會用到各種快取,YYCache或許是你最好的選擇。效能上有優勢,用法也很簡單。作者ibireme曾經對比過同類輪子:http://blog.ibireme.com/2015/10/26/yycache/

1.簡單架構圖

295346-c7ea0fff151e74cd

2.YYCache.h方法分析

3.YYCache使用

列印:

列印:

4.YYCache.h tips

__has_include:用來檢查Frameworks是否引入某個類,
YYWebImage已經整合YYCache,如果匯入過YYWebImage則無需重新匯入YYCache

介面中 nullable 的是少數,一般都為nonnull,為了防止寫一大堆 nonnull,Foundation供了一對巨集NS_ASSUME_NONNULL_BEGINNS_ASSUME_NONNULL_END,包在裡面的物件預設加 nonnull 修飾符,如果是nullable的,只需要把 nullable 的指出來就行

command+滑鼠左鍵UNAVAILABLE_ATTRIBUTE
發現巨集定義#define UNAVAILABLE_ATTRIBUTE __attribute__((unavailable)),
__attribute__Clang提供的一種原始碼註解,方便開發者向編譯器表達某種要求,括號裡是傳達某種命令.
為方便使用,一些常用屬性也被Cocoa定義成巨集,
比如UNAVAILABLE_ATTRIBUTENS_CLASS_AVAILABLE_IOS(9_0).
unavailable告訴編譯器該方法失效.
在封裝單例或初始化某個類前必須做一些事時,對一些方法禁用是非常不錯的選擇.
還可以給個message提示:

295346-4973dbff6e9b1431

295346-ee69ae026a101c89

本文只是簡單剖析,接下來會分析YYMemoryCache實現原理.

References

http://blog.sunnyxx.com/2016/05/14/clang-attributes/
http://blog.sunnyxx.com/2015/06/12/objc-new-features-in-2015/

文章同步到微信公眾號:hans_iOS 有疑問可以在公眾號裡直接發

相關文章