IOS 對(duì)三方庫(kù)的整理

NFNetWorking的整理: ????????????????????????????????????????????????????????????????????????????????????????? AFNetworking是一個(gè)非常方便的網(wǎng)絡(luò)請(qǐng)求庫(kù),可以輕松實(shí)現(xiàn)各種網(wǎng)絡(luò)請(qǐng)求婚夫,比如經(jīng)常使用的GET請(qǐng)求新翎、POST請(qǐng)求,以及上傳多張圖片等该默,下面介紹一下基本的使用方法瞳氓。


首先下載AFNetworking 然后在需要使用的類中,導(dǎo)入如下2個(gè)頭文件:

AFNetworking 3.0正式支持的iOS 7栓袖, Mac OS X的10.9匣摘, watchOS 2 店诗, tvOS 9 和Xcode 7。如果你想使用AFNetworking在針對(duì)較舊版本的SDK項(xiàng)目音榜,請(qǐng)檢查README的兼容性信息庞瘸。

ASIHttpRequest,有三年多沒(méi)更新,而且還是MRC赠叼,跟不上技術(shù)的發(fā)展了擦囊,在ARC基礎(chǔ)上全部都是使用AFNetWorking:ARC下的一個(gè)網(wǎng)絡(luò)請(qǐng)求庫(kù),還在不斷的更新嘴办,使用簡(jiǎn)單方便


發(fā)請(qǐng)求:全部都是異步請(qǐng)求瞬场,沒(méi)有同步請(qǐng)求的方法。使用manager可以發(fā)起GET/PUT/PATCH...請(qǐng)求.

(1.)創(chuàng)建網(wǎng)絡(luò)請(qǐng)求管理類? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];? ? ? ? ? ? ? ? ? ? ? ? ? AFNetworking:默認(rèn)只支持三種響應(yīng)頭:application/json? text/json? text/javascrip? ? ? ? ? ? 我們常用的還有一種:text/html 如果服務(wù)器需要該類型户辞,則設(shè)置下面的參數(shù)? ? ? ? ? ? ? ? ? ? ? ? ? ? (請(qǐng)求失斆诶唷:在error中出現(xiàn)類似 text/html 這種類型的參數(shù)是再設(shè)置).? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (2.)請(qǐng)求體? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];??????????????????????????????????????????????????????????????????????????????????????? (3.)get請(qǐng)求 ?????????????????????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? [manager GET:@"http://localhost:8080/Login/NewServlet?command=5"???????? parameters:nil?????? progress:^(NSProgress * _Nonnull downloadProgress) {???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? } success:^(NSURLSessionDataTask * _Nonnull task, id? _Nullable responseObject) {????????????????????????????????????????? //處理請(qǐng)求成功的事件????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? //AFNetworking:返回參數(shù)是json,AFNetworking會(huì)自動(dòng)返回json解析后的數(shù)據(jù)(NSArray 底燎、 NSDictionary)?????????? //不需要我們使用NSJSONSerialization解析json數(shù)據(jù)??????????????????????????????????????????????????????????????????????????????????????????????? if ([responseObject isKindOfClass:[NSData class]]) {?????????????????????????????????????????????????????? NSLog(@"data--------->%@", [[NSString alloc]initWithData:responseObject encoding:NSUTF8StringEncoding]); }else if ([responseObject isKindOfClass:[NSDictionary class]]) {

NSLog(@"responseObject -----> %@", responseObject);??????????????????????????????????????????????????????????????????????????????????? }???????

} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {????????????????????????????????????????????????? //處理請(qǐng)求失敗的事件?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? NSLog(@"error -----> %@", error);????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? }];


請(qǐng)求數(shù)據(jù)格式???????????????????????????????????????????????????????????????????????????????????????????????????????????????????? AFHTTPRequestSerializer?????二進(jìn)制格式???????????????????????????????????????????????????????????????????? AFJSONRequestSerializer?????JSON??????????????????????????????????????????????????????????????? AFPropertyListRequestSerializer????PList(是一種特殊的XML,解析起來(lái)相對(duì)容易)?????????????????????????????????????????????????????? 響應(yīng)數(shù)據(jù)格式??????????????????????????????????????????????????????????????????????????????????????????????????????????????????? AFHTTPResponseSerializer?? 二進(jìn)制格式???????????????????????????????????????????????????????????????????? AFJSONResponseSerializer???JSON???????????????????????????????????????????????????????????????? AFXMLParserResponseSerializer?????XML,只能返回XMLParser,還需要自己通過(guò)代理方法解析??? AFXMLDocumentResponseSerializer?(Mac?OS?X)???????????????????????????????????????????? AFPropertyListResponseSerializer???PList?????????????????????????????????????????????????????? AFImageResponseSerializer??????????Image???????????????????????????????????????????????????????? AFCompoundResponseSerializer????? 組合


??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? 請(qǐng)求數(shù)據(jù)格式??????????????????????????????????????????????????????????????????????????????????????????????????????????????? AFHTTPRequestSerializer?????二進(jìn)制格式??????????????????????????????????????????????????????????????????? AFJSONRequestSerializer?????JSON????????????????????????????????????????????????????????????????????? AFPropertyListRequestSerializer????PList(是一種特殊的XML,解析起來(lái)相對(duì)容易)


響應(yīng)數(shù)據(jù)格式?????????????????????????????????????????????????????????????????????????????????????????????????????????????????? AFHTTPResponseSerializer?? 二進(jìn)制格式?????????????????????????????????????????????????????????????????? AFJSONResponseSerializer???JSON?????????????????????????????????????????????????????????????????? AFXMLParserResponseSerializer?????XML,只能返回XMLParser,還需要自己通過(guò)代理方法解析?????????? AFXMLDocumentResponseSerializer?(Mac?OS?X)?????????????????????????????????????????? AFPropertyListResponseSerializer???PList???????????????????????????????????????????????????????????????? AFImageResponseSerializer??????? Image?????????????????????????????????????????????????????????????????????????????????????? AFCompoundResponseSerializer? ? ? 組合請(qǐng)求數(shù)據(jù)格式????????????????????????????????????????????????? AFHTTPRequestSerializer?????二進(jìn)制格式???????????????????????????????????????????????????????????????????? AFJSONRequestSerializer?????JSON?????????????????????????????????????????????????????????????? AFPropertyListRequestSerializer????PList(是一種特殊的XML,解析起來(lái)相對(duì)容易)

響應(yīng)數(shù)據(jù)格式????????????????????????????????????????????????????????????????????????????????????????????????????????????????? AFHTTPResponseSerializer?? 二進(jìn)制格式?????????????????????????????????????????????????????????????????? AFJSONResponseSerializer???JSON??????????????????????????????????????????????????????????????????? AFXMLParserResponseSerializer?????XML,只能返回XMLParser,還需要自己通過(guò)代理方法解析?? AFXMLDocumentResponseSerializer?(Mac?OS?X)??????????????????????????????????????????? AFPropertyListResponseSerializer???PList????????????????????????????????????????????????????? AFImageResponseSerializer??????????Image??????????????????????????????????????????????????????? AFCompoundResponseSerializer???????組合


(4.)POST請(qǐng)求???????????????????????????????????????????????????????????????????????????????? manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];?????????????????? [manager POST:@"http://localhost:8080/Login/NewServlet" parameters:parma progress:^(NSProgress * _Nonnull uploadProgress) {????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? } success:^(NSURLSessionDataTask * _Nonnull task, id? _Nullable responseObject) {

NSLog(@"------->%@", responseObject);

} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {

NSLog(@"error ------> %@", error);

}];

(5.)稍微插入一點(diǎn)小知識(shí)???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? //檢測(cè)網(wǎng)絡(luò)狀態(tài)?????????????????????????????????????????????????????????????????????????????????????????????????????????????? [manager.reachabilityManager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {????????? if (status == 0) {?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? NSLog(@"沒(méi)有網(wǎng)絡(luò)");?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? }else if (status == 1) {?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? NSLog(@"移動(dòng)網(wǎng)絡(luò)");???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? }else if (status == 2) {?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? NSLog(@"WiFi");???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? }??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? }];

//開始檢測(cè)??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? [manager.reachabilityManager startMonitoring];


SDWebImage的使用? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 第一步刃榨,下載SDWebImage,導(dǎo)入工程双仍。???????????????????????????????????????????????????????????????????????? github托管地址https://github.com/rs/SDWebImage????????????????????????????????????????????????????????? 第二步枢希,在需要的地方導(dǎo)入頭文件? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #import "UIImageView+WebCache.h"????????????????????????????????????????????????????????????????????????????????

導(dǎo)入頭文件

然后再說(shuō)說(shuō)加載圖片的一些流程? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 1.入口setImageWithURL:placeholderImage:options: 會(huì)先把 placeholderImage 顯示,然后 SDWebImageManager 根據(jù) URL 開始處理圖片朱沃。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 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.如果內(nèi)存緩存中沒(méi)有,生成 NSInvocationOperation 添加到隊(duì)列開始從硬盤查找圖片是否已經(jīng)緩存翎卓。? ? ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? 5.根據(jù) URLKey 在硬盤緩存目錄下嘗試讀取圖片文件契邀。這一步是在 NSOperation 進(jìn)行的操作,所以回主線程進(jìn)行結(jié)果回調(diào)notifyDelegate:失暴。????????????????????????????????????????????????????????????????????????? 6.如果上一操作從硬盤讀取到了圖片坯门,將圖片添加到內(nèi)存緩存中(如果空閑內(nèi)存過(guò)小,會(huì)先清空內(nèi)存緩存)逗扒。SDImageCacheDelegate 回調(diào)imageCache:didFindImage:forKey:userInfo:古戴。進(jìn)而回調(diào)展示圖片。???????????????????????????????????????????????????????????????????????????????????????????????????????????????? 7.如果從硬盤緩存目錄讀取不到圖片矩肩,說(shuō)明所有緩存都不存在該圖片现恼,需要下載圖片,回調(diào)imageCache:didNotFindImageForKey:userInfo:。???????????????????????????????????????????????????????????? 8.共享或重新生成一個(gè)下載器SDWebImageDownloader?開始下載圖片述暂。?????????????????????????????????? 9.圖片下載由 NSURLConnection 來(lái)做痹升,實(shí)現(xiàn)相關(guān) delegate 來(lái)判斷圖片下載中建炫、下載完成和下載失敗畦韭。????????????????????????????????????????????????????????????????????????????????????? 10.connection:didReceiveData:中利用 ImageIO 做了按圖片下載進(jìn)度加載效果。11.connectionDidFinishLoading:數(shù)據(jù)下載完成后交給?SDWebImageDecoder做圖片解碼處理肛跌。?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? 12.圖片解碼處理在一個(gè) NSOperationQueue 完成艺配,不會(huì)拖慢主線程 UI。如果有需要對(duì)下載的圖片進(jìn)行二次處理衍慎,最好也在這里完成转唉,效率會(huì)好很多。?????????????????????????????????????????????????????????? 13.在主線程?notifyDelegateOnMainThreadWithInfo:宣告解碼完成稳捆,imageDecoder:didFinishDecodingImage:userInfo:回調(diào)給SDWebImageDownloader.???? 14.imageDownloader:didFinishWithImage:回調(diào)給 SDWebImageManager 告知圖片下載完成僻肖。?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? 15.通知所有的 downloadDelegates 下載完成根欧,回調(diào)給需要的地方展示圖片。?????????????????????? 16.將圖片保存到 SDImageCache 中,內(nèi)存緩存和硬盤緩存同時(shí)保存余境。寫文件到硬盤也在以單獨(dú) NSInvocationOperation 完成,避免拖慢主線程嚎卫。???????????????????????????????????????????????? 17.SDImageCache 在初始化的時(shí)候會(huì)注冊(cè)一些消息通知勃救,在內(nèi)存警告或退到后臺(tái)的時(shí)候清理內(nèi)存圖片緩存,應(yīng)用結(jié)束的時(shí)候清理過(guò)期圖片甲脏。????????????????????????????????????????????????????????????????????? 18.SDWI 也提供了?UIButton+WebCache和?MKAnnotationView+WebCache眶熬,方便使用。19.SDWebImagePrefetcher可以預(yù)先下載圖片块请,方便后續(xù)使用????????????????????????????????????????????????

從上面流程可以看出娜氏,當(dāng)你調(diào)用setImageWithURL:方法的時(shí)候,他會(huì)自動(dòng)去給你干這么多事墩新,當(dāng)你需要在某一具體時(shí)刻做事情的時(shí)候贸弥,你可以覆蓋這些方法。比如在下載某個(gè)圖片的過(guò)程中要響應(yīng)一個(gè)事件抖棘,就覆蓋這個(gè)方法:

SDWebImage庫(kù)的作用還是要拿出來(lái)講一下? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? 通過(guò)對(duì)UIImageView的類別擴(kuò)展來(lái)實(shí)現(xiàn)異步加載替換圖片的工作茂腥。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? 主要用到的對(duì)象:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 1、UIImageView (WebCache)類別切省,入口封裝最岗,實(shí)現(xiàn)讀取圖片完成后的回調(diào)? ? ? ? ? ? ? ? ? ? ? ? ? ? 2、SDWebImageManager朝捆,對(duì)圖片進(jìn)行管理的中轉(zhuǎn)站般渡,記錄那些圖片正在讀取。向下層讀取Cache(調(diào)用SDImageCache),或者向網(wǎng)絡(luò)讀取對(duì)象(調(diào)用SDWebImageDownloader) 驯用。實(shí)現(xiàn)SDImageCache和SDWebImageDownloader的回調(diào)脸秽。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3、SDImageCache蝴乔,根據(jù)URL的MD5摘要對(duì)圖片進(jìn)行存儲(chǔ)和讀燃遣汀(實(shí)現(xiàn)存在內(nèi)存中或者存在硬盤上兩種實(shí)現(xiàn))實(shí)現(xiàn)圖片和內(nèi)存清理工作。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 4薇正、SDWebImageDownloader片酝,根據(jù)URL向網(wǎng)絡(luò)讀取數(shù)據(jù)(實(shí)現(xiàn)部分讀取和全部讀取后再通知回調(diào)兩種方式)????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? SDWebImage的用法還有很多,需要在日后的編程中去發(fā)現(xiàn)


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末挖腰,一起剝皮案震驚了整個(gè)濱河市雕沿,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌猴仑,老刑警劉巖审轮,帶你破解...
    沈念sama閱讀 222,590評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異辽俗,居然都是意外死亡疾渣,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門榆苞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)稳衬,“玉大人,你說(shuō)我怎么就攤上這事坐漏”【危” “怎么了?”我有些...
    開封第一講書人閱讀 169,301評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵赊琳,是天一觀的道長(zhǎng)街夭。 經(jīng)常有香客問(wèn)我,道長(zhǎng)躏筏,這世上最難降的妖魔是什么板丽? 我笑而不...
    開封第一講書人閱讀 60,078評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮趁尼,結(jié)果婚禮上埃碱,老公的妹妹穿的比我還像新娘。我一直安慰自己酥泞,他們只是感情好砚殿,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著芝囤,像睡著了一般似炎。 火紅的嫁衣襯著肌膚如雪辛萍。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,682評(píng)論 1 312
  • 那天羡藐,我揣著相機(jī)與錄音贩毕,去河邊找鬼。 笑死仆嗦,一個(gè)胖子當(dāng)著我的面吹牛辉阶,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播欧啤,決...
    沈念sama閱讀 41,155評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼睛藻,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼启上!你這毒婦竟也來(lái)了邢隧?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,098評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤冈在,失蹤者是張志新(化名)和其女友劉穎倒慧,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體包券,經(jīng)...
    沈念sama閱讀 46,638評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡纫谅,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了溅固。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片付秕。...
    茶點(diǎn)故事閱讀 40,852評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖侍郭,靈堂內(nèi)的尸體忽然破棺而出询吴,到底是詐尸還是另有隱情,我是刑警寧澤亮元,帶...
    沈念sama閱讀 36,520評(píng)論 5 351
  • 正文 年R本政府宣布猛计,位于F島的核電站,受9級(jí)特大地震影響爆捞,放射性物質(zhì)發(fā)生泄漏奉瘤。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評(píng)論 3 335
  • 文/蒙蒙 一煮甥、第九天 我趴在偏房一處隱蔽的房頂上張望盗温。 院中可真熱鬧,春花似錦成肘、人聲如沸卖局。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)吼驶。三九已至惩激,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蟹演,已是汗流浹背风钻。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留酒请,地道東北人骡技。 一個(gè)月前我還...
    沈念sama閱讀 49,279評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像羞反,于是被迫代替她去往敵國(guó)和親布朦。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容