iOS開發(fā)主流框架的搭建

客戶端開發(fā)的本質(zhì)就是從展示到存取數(shù)據(jù)再到展示的一個(gè)交互過程臀晃。

以登錄為例:

  1. 用戶輸入賬號(hào)(取數(shù)據(jù))
  1. 點(diǎn)擊登錄后澜共,上傳數(shù)據(jù)到服務(wù)端(期間各種校驗(yàn))
  • 服務(wù)端返回?cái)?shù)據(jù)(根據(jù)賬號(hào)返回登錄的情況)
  • 解析數(shù)據(jù)
  • 客戶端根據(jù)解析出的數(shù)據(jù)做出相應(yīng)(如登錄成功存儲(chǔ)用戶數(shù)據(jù)并跳轉(zhuǎn)到首頁(yè),登錄失敗則提示失敗原因)

從中可以清晰的想象出多個(gè)展示和交互的操作,接下去就看看如果要開發(fā)一個(gè)項(xiàng)目必不可少的功能和對(duì)應(yīng)的框架介紹。


網(wǎng)絡(luò)

  • ASIHTTPRequest
  • AFNetworking

ASIHTTPRequest框架是最早設(shè)計(jì)的框架,它的功能強(qiáng)大但是不支持ARC进泼,并且已經(jīng)停止更新
AFNetworking輕量、易用、使用者多缘琅、開發(fā)者有在積極維護(hù)粘都,支持block,是目前最優(yōu)秀的一個(gè)了

NSURL *URL = [NSURL URLWithString:@""];
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
[manager GET:URL.absoluteString parameters:nil success:^(NSURLSessionTask *task, id responseObject) {
        NSLog(@"JSON: %@", responseObject);
} failure:^(NSURLSessionTask *operation, NSError *error) {
        NSLog(@"Error: %@", error);
}];

數(shù)據(jù)解析

作為一種輕量級(jí)的數(shù)據(jù)交換格式刷袍,json正在逐步取代xml翩隧,成為網(wǎng)絡(luò)數(shù)據(jù)的通用格式。

出現(xiàn)過的解析框架有很多:TouchJson呻纹、 SBJson 堆生、JSONKit等,但從IOS5開始雷酪,APPLE提供了對(duì)json的原生支持(NSJSONSerialization)淑仆,對(duì)于六種解析速度做了測(cè)試,分析如下:

無疑NSJSONSerialization最快哥力,目前來說蔗怠,大部分iOS項(xiàng)目都基于7.0以上,因此應(yīng)直接選擇系統(tǒng)自帶的NSJSONSerialization進(jìn)行解析吩跋。

    NSString *jsonString = [NSString stringWithString:json];
    NSData *jasonData = [[NSData alloc] initWithData:[jsonString dataUsingEncoding:NSUTF8StringEncoding]];
    NSDictionary *jsonDic = [NSJSONSerialization JSONObjectWithData:jasonData options:NSJSONReadingMutableLeaves error:nil];

圖片緩存

使用第三方框架SDWebImage(非常優(yōu)秀)

處理網(wǎng)絡(luò)圖片緩存步驟:

  • 根據(jù)圖片URL查找內(nèi)存是否有這張圖片寞射,有則返回圖片,沒有則進(jìn)入第二步
  • 查找物理存儲(chǔ)是否有這張圖片锌钮,有則返回圖片桥温,沒有則進(jìn)入第三步
  • 從網(wǎng)絡(luò)上下載該圖片,下載完后保存到內(nèi)存和物理存儲(chǔ)上梁丘,并返回該圖片

特點(diǎn) : 依賴的庫(kù)很少.功能全面侵浸。自動(dòng)實(shí)現(xiàn)磁盤緩存:緩存圖片名字是以MD5進(jìn)行加密的后的名字進(jìn)行命名.(因?yàn)榧用苣嵌炎执俏ㄒ坏?

[imageViewsd_setImageWithURL:v.fullImageURL placeholderImage:[UIImage imageNamed:@”xxxxx”]].

就一個(gè)方法就實(shí)現(xiàn)了多線程/帶緩沖等效果.(可用帶參數(shù)的方法,具體可看頭文件)

注意:
因?yàn)閁RL包含特殊字符和長(zhǎng)度不確定,要對(duì)URL進(jìn)行MD5處理或其他處理
如果圖片改變但圖片url沒有改變氛谜,會(huì)導(dǎo)致本地不去更新


數(shù)據(jù)持久化

所謂的持久化掏觉,就是將數(shù)據(jù)保存到硬盤中,使得在應(yīng)用程序或機(jī)器重啟后可以繼續(xù)訪問之前保存的數(shù)據(jù)值漫。在iOS開發(fā)中履腋,有很多數(shù)據(jù)持久化的方案,接下來我將嘗試著介紹一下5種方案:

  • plist文件:將某些特定的類惭嚣,通過XML文件的方式保存在目錄中。
  1. 存儲(chǔ)時(shí)使用writeToFile: atomically:方法悔政。 其中atomically表示是否需要先寫入一個(gè)輔助文件晚吞,再把輔助文件拷貝到目標(biāo)文件地址。這是更安全的寫入文件方法谋国,一般都寫YES槽地。
  2. 讀取時(shí)使用arrayWithContentsOfFile:方法。
  • preference:存儲(chǔ)偏好設(shè)置
  1. 偏好設(shè)置是專門用來保存應(yīng)用程序的配置信息的,一般不要在偏好設(shè)置中保存其他數(shù)據(jù)捌蚊。
  2. 如果沒有調(diào)用synchronize方法集畅,系統(tǒng)會(huì)根據(jù)I/O情況不定時(shí)刻地保存到文件中。所以如果需要立即寫入文件的就必須調(diào)用synchronize方法缅糟。
  3. 偏好設(shè)置會(huì)將所有數(shù)據(jù)保存到同一個(gè)文件中挺智。即preference目錄下的一個(gè)以此應(yīng)用包名來命名的plist文件。
  • NSKeyedArchiver:歸檔
  • SQLite 3
  • CoreData

本質(zhì)上來說窗宦,Core Data使用的就是SQLite赦颇,但是通過一系列特性避免了使用SQL的一些列的麻煩,不僅如此赴涵,他還能夠合理管理內(nèi)存


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末媒怯,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子髓窜,更是在濱河造成了極大的恐慌扇苞,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件寄纵,死亡現(xiàn)場(chǎng)離奇詭異鳖敷,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)擂啥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門哄陶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人哺壶,你說我怎么就攤上這事屋吨。” “怎么了山宾?”我有些...
    開封第一講書人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵至扰,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我资锰,道長(zhǎng)敢课,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任绷杜,我火速辦了婚禮直秆,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘鞭盟。我一直安慰自己圾结,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開白布齿诉。 她就那樣靜靜地躺著筝野,像睡著了一般晌姚。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上歇竟,一...
    開封第一講書人閱讀 49,764評(píng)論 1 290
  • 那天挥唠,我揣著相機(jī)與錄音,去河邊找鬼焕议。 笑死宝磨,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的号坡。 我是一名探鬼主播懊烤,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼宽堆!你這毒婦竟也來了腌紧?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤畜隶,失蹤者是張志新(化名)和其女友劉穎壁肋,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體籽慢,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡浸遗,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了箱亿。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片跛锌。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖届惋,靈堂內(nèi)的尸體忽然破棺而出髓帽,到底是詐尸還是另有隱情,我是刑警寧澤脑豹,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布郑藏,位于F島的核電站,受9級(jí)特大地震影響瘩欺,放射性物質(zhì)發(fā)生泄漏必盖。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一俱饿、第九天 我趴在偏房一處隱蔽的房頂上張望歌粥。 院中可真熱鬧,春花似錦拍埠、人聲如沸阁吝。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)突勇。三九已至,卻和暖如春坷虑,著一層夾襖步出監(jiān)牢的瞬間甲馋,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來泰國(guó)打工迄损, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留定躏,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓芹敌,卻偏偏與公主長(zhǎng)得像痊远,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子氏捞,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348

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