·您现在的位置: 云翼网络 >> 文章中心 >> 网站建设 >> app软件开发 >> IOS开发 >> IOS开发--第三阶段--微博(2)(微博MVC)

IOS开发--第三阶段--微博(2)(微博MVC)

作者:佚名      IOS开发编辑:admin      更新时间:2022-07-23

 

MVC设计模式

设计模式:前人总结的经验、方法和工具

委托、观察者、单例  工厂

Model-View-Controller 模型-视图-控制器

在iOS开发中应用较为广泛的设计模式

 

Model 模型 处理数据或者处理业务逻辑

View 视图 程序与用户交互的界面,用户可以看到它的存在

Controller 控制器 处理用户交互的 负责视图和模型之间的数据及请示的传递

 

Controller-View Controller-Model

View跟Model之间没有直接的操作

 

 

View:webView

Model:request sina

controller:ViewCtroller

 

用户点击了View View将用户操作传递给了控制器、控制器让Model更新、Model操作过之后 通知控制器我搞定了 控制器去刷新UI

 

 

区别于DAO设计模式 DAO其实只是相当于MVC中Model的功能 

 

授权

access_token 

TimeLineViewController 公共微博

 

M:ZYSinaEngine 负责跟新浪相关、请求模块

V:ZYLoginWebView 负责展示授权界面 以供用户交互

C:ZYTimeLineViewController 负责管理V以及V上数据的展示 V和M之间的数据以及请求的传递

 

类与类/(对象与对象)之间交互:1、通知 2、代理(协议) 3、PRoperty:需创建对象

 

 

按照MVC来设计代码

新建ZYLoginWebView继承于UIView

在ZYLoginWebView.h中添加webView属性

在ZYLoginWebView的初始化方法中 创建初始化webView 并添加

 

 

设置代理 导入协议 实现两个协议方法

重写layoutSubviews方法 方法中设置webView的frame

让webView加载请求 请求归M管 新建Model类ZYSinaEngine 

在ZYSinaEngine类中添加加号方法(方便)authorizeReuqest返回一个请求

authorizeReuqest方法实现时 需要很多新浪创建的应用的参数 而且参数会多次用到 所以宏定义在ZYSinaEngine中

 

 

在ZYLoginWebView.h中定义 ****- (void)loadAuthorizeRequest:(NSURLRequest *)request;

在TimeLineViewController中 创建并初始化ZYLoginWebView 然后 加载请求

在webView代理方法中接收code

 

 

接收到code后 需要告诉TimeLineViewController 使用协议

因为是ZYLoginWebView想给别人传信息 所以在ZYLoginWebView中应该有一个委托对象属性id<协议名> delegate

在ZYLoginWebView中写协议方法 并且在.m中调用协议方法

NSError的构成

TimeLineViewController实现代理方法 拿到code

 

 

在ZYSinaEngine中 声明一个实例方法 根据code请求accesstoken

拿到token后 告诉Controller拿到accesstoken 使用协议

因为是ZYSinaEngine想给别人传信息 所以在ZYSinaEngine中应该有一个委托对象属性 id<协议名> delegate

 

 

在ZYSinaEngine中写协议方法 并且在.m中使用代理对象调用协议方法 因为协议方法为可选方法 所以应加判断 代理对象是否存在且是否可以相应代理方法

TimeLineViewController实现代理方法 拿到access_token

在ZYSinaEngine中 声明一个实例方法 根据accesstoken请求公共微博数据

拿到数据后 解析 告诉Controller拿到数据 使用协议 可以使用ZYSinaEngineDelegate