一、第三方API是怎么用的执泰?
- 1.第三方API在官方文檔都有說(shuō)明唧躲,按照官方文檔的一步一步做
- 2.參考官方提供的示例程序
- 3.先自己創(chuàng)建一個(gè)工程試試,等熟悉了篡腌,在使用到項(xiàng)目中
二褐荷、列舉現(xiàn)在熟悉 iOS開(kāi)發(fā)庫(kù)和第三方開(kāi)發(fā)庫(kù)?
友盟(包括第三方登錄和分享)嘹悼,高德地圖叛甫,百度地
圖,AFN,SDWebimage,FMDB, MBProgressHUD,Fabric
Crashlytics,R.swift,JSms,UMengUShare/UI,CircleProgressView,MJRefresh, IQKeyboardManagerSwift,Moya/RxSwift,Qiniu,SDWebImage,RxDataSources,RealmSwift,Mapbox-iOS-SDK,AudioKit,AudioKit/UI等等
三、SDWebImage內(nèi)部實(shí)現(xiàn)過(guò)程
1.入口setImageWithURL:placeholderImage:options: 會(huì)先把placeholderImage 顯示杨伙,然后 SDWebImageManager 根據(jù) URL 開(kāi)始處理圖片其监。
2.進(jìn)入 SDWebImageManager-downloadWithURL:delegate:options:userInfo: 交給 SDImageCache 從緩存查找圖片是否已經(jīng)下載queryDiskCacheForKey:delegate:userInfo:
3.先從內(nèi)存圖片緩存查找是否有圖片,如果內(nèi)存中已經(jīng)有圖片緩存限匣,SDImageCacheDelegate 回調(diào) imageCache:didFindImage:forKey:userInfo: 到 SDWebImageManager抖苦。
4.SDWebImageManagerDelegate 回調(diào) webImageManager:didFinishWithImage: 到UIImageView+WebCache 等前端展示圖片。
5.如果內(nèi)存緩存中沒(méi)有米死,生成 NSInvocationOperation 添加到隊(duì)列開(kāi)始從硬盤(pán)查找圖片是否已經(jīng)緩存锌历。
6.根據(jù) URLKey 在硬盤(pán)緩存目錄下嘗試讀取圖片文件。這一步是在 NSOperation 進(jìn)行的操作峦筒,所以回主線程進(jìn)行結(jié)果回調(diào)notifyDelegate:
7.如果上一操作從硬盤(pán)讀取到了圖片究西,將圖片添加到內(nèi)存緩存中(如果空閑內(nèi)存過(guò)小,會(huì)先清空內(nèi)存緩存)物喷。SDImageCacheDelegate 回調(diào)imageCache:didFindImage:forKey:userInfo: 進(jìn)而回調(diào)展示圖片卤材。
8.如果從硬盤(pán)緩存目錄讀取不到圖片遮斥,說(shuō)明所有緩存都不存在該圖片,需要下載圖片商膊,回調(diào) imageCache:didNotFindImageForKey:userInfo:
9.共享或重新生成一個(gè)下載器 SDWebImageDownloader 開(kāi)始下載圖片伏伐。
10.圖片下載由 NSURLConnection 來(lái)做,實(shí)現(xiàn)相關(guān) delegate 來(lái)判斷圖片下載中晕拆、下載完成和下載失敗藐翎。
11.connection:didReceiveData: 中利用 ImageIO 做了按圖片下載進(jìn)度加載效果。
12.connectionDidFinishLoading: 數(shù)據(jù)下載完成后交給 SDWebImageDecoder 做圖片解碼處理实幕。
13.圖片解碼處理在一個(gè) NSOperationQueue 完成吝镣,不會(huì)拖慢主線程 UI。如果有需要對(duì)下載的圖片進(jìn)行二次處理昆庇,最好也在這里完成末贾,效率會(huì)好很多。
14.在主線程notifyDelegateOnMainThreadWithInfo: 宣告解碼完成整吆,imageDecoder:didFinishDecodingImage:userInfo: 回調(diào)給 SDWebImageDownloader拱撵。
15.imageDownloader:didFinishWithImage: 回調(diào)給 SDWebImageManager 告知圖片下載完成。
16.通知所有的 downloadDelegates 下載完成表蝙,回調(diào)給需要的地方展示圖片拴测。
17.將圖片保存到 SDImageCache 中,內(nèi)存緩存和硬盤(pán)緩存同時(shí)保存府蛇。寫(xiě)文件到硬盤(pán)也在以單獨(dú) NSInvocationOperation 完成集索,避免拖慢主線程。
18.SDImageCache 在初始化的時(shí)候會(huì)注冊(cè)一些消息通知汇跨,在內(nèi)存警告或退到后臺(tái)的時(shí)候清理內(nèi)存圖片緩存务荆,應(yīng)用結(jié)束的時(shí)候清理過(guò)期圖片。
19.SDWebImage 也提供了UIButton+WebCache 和 MKAnnotationView+WebCache穷遂,方便使用函匕。
20.SDWebImagePrefetcher 可以預(yù)先下載圖片,方便后續(xù)使用蚪黑。
四浦箱、使用過(guò)友盟、融云嗎祠锣?
使用過(guò)友盟的社會(huì)化分享,集成了 qq 空間咽安、qq 好友伴网、微信、朋友圈妆棒、新浪微博分享和數(shù)據(jù)統(tǒng)計(jì)澡腾,統(tǒng)計(jì)流量來(lái)源沸伏、內(nèi)容使用、用戶屬性和行為數(shù)據(jù)动分∫阍悖可以熟練的自定義分享的界面
五、常使用的支付方式有哪些澜公?介紹一下集成邏輯
下載 SDK姆另,申請(qǐng)賬號(hào)、交費(fèi)坟乾、加入客服群迹辐,按照 SDK 進(jìn)行集成 百度錢(qián)包、微信支付甚侣、支付寶明吩、銀聯(lián)
iOS之支付
六、你實(shí)現(xiàn)過(guò)一個(gè)框架或者庫(kù)以供別人使用么殷费?如果有印荔,請(qǐng)談一談構(gòu)建框架或者庫(kù)時(shí)候的經(jīng)驗(yàn);如果沒(méi)有详羡,請(qǐng)?jiān)O(shè)想和設(shè)計(jì)框架的 public的 API仍律,并指出大概需要如何做、需要注意一些什么方面殷绍,來(lái)使別人容易地使用你的框架染苛。
- 大公司面試三年以上開(kāi)發(fā)人員基本都會(huì)問(wèn)的問(wèn)題
答:抽象和封裝,方便使用主到。首先是對(duì)問(wèn)題有充分的了解茶行,比如構(gòu)建一個(gè)文件解壓壓縮框架,從使用者的角度出發(fā)登钥,只需關(guān)注發(fā)送給框架一個(gè)解壓請(qǐng)求畔师,框架完成復(fù)雜文件的解壓操作,并且在適當(dāng)?shù)臅r(shí)候通知給是哦難過(guò)者牧牢,如解壓完成看锉、解壓出錯(cuò)等。在框架內(nèi)部去構(gòu)建對(duì)象的關(guān)系塔鳍,通過(guò)抽象讓其更為健壯伯铣、便于更改。其次是API的說(shuō)明文檔轮纫。