zoukankan      html  css  js  c++  java
  • IOS开发--第三阶段--微博(2)(微博MVC)

    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

  • 相关阅读:
    APP上线碰到的问题:Non-public API usage
    点语法
    strlen、strcpy、strcat的实现
    2. I/O模型基本说明
    1. 同步、异步、阻塞、非阻塞
    8. 负载均衡请求转发实现
    7.负载均衡算法
    6. Nginx配置示例-高可用集群
    5. Nginx配置示例-动静分离
    4. Nginx配置示例-负载均衡
  • 原文地址:https://www.cnblogs.com/gegeboke/p/4372432.html
Copyright © 2011-2022 走看看