MVC設(shè)計(jì)模式
設(shè)計(jì)模式:前人總結(jié)的經(jīng)驗(yàn)、方法和工具
委托、觀察者、單例 工廠
Model-View-Controller 模型-視圖-控制器
在iOS開發(fā)中應(yīng)用較為廣泛的設(shè)計(jì)模式
Model 模型 處理數(shù)據(jù)或者處理業(yè)務(wù)邏輯
View 視圖 程序與用戶交互的界面,用戶可以看到它的存在
Controller 控制器 處理用戶交互的 負(fù)責(zé)視圖和模型之間的數(shù)據(jù)及請(qǐng)示的傳遞
Controller-View Controller-Model
View跟Model之間沒(méi)有直接的操作
View:webView
Model:request sina
controller:ViewCtroller
用戶點(diǎn)擊了View View將用戶操作傳遞給了控制器、控制器讓Model更新、Model操作過(guò)之后 通知控制器我搞定了 控制器去刷新UI
區(qū)別于DAO設(shè)計(jì)模式 DAO其實(shí)只是相當(dāng)于MVC中Model的功能
授權(quán)
access_token
TimeLineViewController 公共微博
M:ZYSinaEngine 負(fù)責(zé)跟新浪相關(guān)、請(qǐng)求模塊
V:ZYLoginWebView 負(fù)責(zé)展示授權(quán)界面 以供用戶交互
C:ZYTimeLineViewController 負(fù)責(zé)管理V以及V上數(shù)據(jù)的展示 V和M之間的數(shù)據(jù)以及請(qǐng)求的傳遞
類與類/(對(duì)象與對(duì)象)之間交互:1、通知 2、代理(協(xié)議) 3、PRoperty:需創(chuàng)建對(duì)象
按照MVC來(lái)設(shè)計(jì)代碼
新建ZYLoginWebView繼承于UIView
在ZYLoginWebView.h中添加webView屬性
在ZYLoginWebView的初始化方法中 創(chuàng)建初始化webView 并添加
設(shè)置代理 導(dǎo)入?yún)f(xié)議 實(shí)現(xiàn)兩個(gè)協(xié)議方法
重寫layoutSubviews方法 方法中設(shè)置webView的frame
讓webView加載請(qǐng)求 請(qǐng)求歸M管 新建Model類ZYSinaEngine
在ZYSinaEngine類中添加加號(hào)方法(方便)authorizeReuqest返回一個(gè)請(qǐng)求
authorizeReuqest方法實(shí)現(xiàn)時(shí) 需要很多新浪創(chuàng)建的應(yīng)用的參數(shù) 而且參數(shù)會(huì)多次用到 所以宏定義在ZYSinaEngine中
在ZYLoginWebView.h中定義 ****- (void)loadAuthorizeRequest:(NSURLRequest *)request;
在TimeLineViewController中 創(chuàng)建并初始化ZYLoginWebView 然后 加載請(qǐng)求
在webView代理方法中接收code
接收到code后 需要告訴TimeLineViewController 使用協(xié)議
因?yàn)槭荶YLoginWebView想給別人傳信息 所以在ZYLoginWebView中應(yīng)該有一個(gè)委托對(duì)象屬性id<協(xié)議名> delegate
在ZYLoginWebView中寫協(xié)議方法 并且在.m中調(diào)用協(xié)議方法
NSError的構(gòu)成
TimeLineViewController實(shí)現(xiàn)代理方法 拿到code
在ZYSinaEngine中 聲明一個(gè)實(shí)例方法 根據(jù)code請(qǐng)求accesstoken
拿到token后 告訴Controller拿到accesstoken 使用協(xié)議
因?yàn)槭荶YSinaEngine想給別人傳信息 所以在ZYSinaEngine中應(yīng)該有一個(gè)委托對(duì)象屬性 id<協(xié)議名> delegate
在ZYSinaEngine中寫協(xié)議方法 并且在.m中使用代理對(duì)象調(diào)用協(xié)議方法 因?yàn)閰f(xié)議方法為可選方法 所以應(yīng)加判斷 代理對(duì)象是否存在且是否可以相應(yīng)代理方法
TimeLineViewController實(shí)現(xiàn)代理方法 拿到access_token
在ZYSinaEngine中 聲明一個(gè)實(shí)例方法 根據(jù)accesstoken請(qǐng)求公共微博數(shù)據(jù)
拿到數(shù)據(jù)后 解析 告訴Controller拿到數(shù)據(jù) 使用協(xié)議 可以使用ZYSinaEngineDelegate
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注