//聯(lián)系人:石虎QQ: 1224614774昵稱:嗡嘛呢叭咪哄
*如何學(xué)習(xí)第三方框架
一.準(zhǔn)備工作
如何獲得?http://github.com
搜索:sdwebImage
github上所有框架都不要download
1.帶版本庫克隆到本地
$ git clone --recursive https://github.com/rs/SDWebImage.git
//更新服務(wù)器的代碼,進(jìn)入存放代碼的位置
$ git pull
提示$ git clone --help
--recursive遞歸,如果第三方框架有其他的依賴,會(huì)一起clone到本地
2.打開項(xiàng)目,運(yùn)行測試程序SDWebImage.xcworkspace
如果提示:clang: error: no input files通常是因?yàn)榈谌娇蚣苓€依賴其他的框架
3.通常作者提供的演示程序,能夠最快的找到如何使用的方法,以及細(xì)節(jié)!
4.看官方首頁文檔,找到最重要的方法!
5.建立"分支"-同樣適合走向工作崗位
在Xcode中,選擇source control-Branch-New Branch(分支)
建立分支可以讓我們放手去嘗試!
二.測試第三方框架的功能!
1.拖拽框架的時(shí)候,不要copy到項(xiàng)目中,保證有一個(gè)唯一的地方框架的副本,能夠讓自己的學(xué)習(xí)有效的積累。
2.閱讀代碼,找到關(guān)鍵代碼閱讀!
找到關(guān)鍵方法:sd_setImageWithURL
提示:不要從第一個(gè)文件開始看起
3.不清楚的地方,可以創(chuàng)建測試程序運(yùn)行,測試效果,閱讀代碼未必能夠看清每一個(gè)細(xì)節(jié)。
4.變閱讀代碼,變寫注釋!
github.com/liufan321
SDWebImage有一個(gè)分支“我的學(xué)習(xí)”
三.常用方法
1>常用方法
- (void)sd_setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder;
- (void)sd_setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder options:(SDWebImageOptions)options;
- (void)sd_setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder completed:(SDWebImageCompletionBlock)completedBlock;
- (void)sd_setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder options:(SDWebImageOptions)options progress:(SDWebImageDownloaderProgressBlock)progressBlock completed:(SDWebImageCompletionBlock)completedBlock;
2>? SDWebImageOptions
* SDWebImageRetryFailed :下載失敗后,會(huì)自動(dòng)重新下載
* SDWebImageLowPriority :當(dāng)正在進(jìn)行UI交互時(shí),自動(dòng)暫停內(nèi)部的一些下載操作
* SDWebImageRetryFailed | SDWebImageLowPriority :擁有上面2個(gè)功能
四.面試題:
1.磁盤緩存有多長時(shí)間
答:一周
2SDWebImage底層是怎么實(shí)現(xiàn)的?
答: PPT的"cell下載圖片思路–有沙盒緩存"
3.SDWebImage中的GIF是怎么播放的?
答:1> #import
2>讀取出GIF文件中的每一楨圖片,設(shè)置UIImageView的可動(dòng)畫數(shù)組
3>自動(dòng)計(jì)算gif播放的時(shí)長
另外,如果用SDWebImage顯示gif,什么附加操作都不用做
4.SDWebImage的內(nèi)存警告是如何處理的?
答:1>? SDImageCache在實(shí)例化的時(shí)候會(huì)注冊(cè)監(jiān)聽?wèi)?yīng)用程序通知
2>一旦接收到內(nèi)存警告,直接清理內(nèi)存緩存
3>應(yīng)用程序被終止前,清理過期磁盤緩存
4>應(yīng)用程序退出到后臺(tái),在后臺(tái)清理磁盤緩存
//清理磁盤緩存
- (void)clearMemory;
//清除硬盤緩存
- (void)clearDisk;
//清理硬盤緩存(超過時(shí)間的圖片)
- (void)cleanDisk;