码迷,mamicode.com
首页 > 移动开发 > 详细

iOS开发指南 第8章 iOS常用设计模式 学习

时间:2015-09-19 00:42:52      阅读:244      评论:0      收藏:0      [点我收藏+]

标签:

设计模式是在特定场景下对特定问题的解决方案

1 单例模式

   作用:解决“应用中只有一个实例”的问题,这个实例的作用是全局的,比如说是可以实现一些共享资源 方法的访问和状态的保持

   实现原理:一般会封装一个静态属性,并提供静态实例的创建方法。

***********

James Rumbaugh对类的定义是:类是具有相似结构、行为和关系的一组对象的描述符。类是面向对象系统中最重要的构造块。类图显示了一组类、接口、协作以及他们之间的关系。

建立类图的步骤:
(1)研究分析问题领域确定系统需求。
(2)确定类,明确类的含义和职责、确定属性和操作。
(3)确定类之间的关系。
***********
@synthesize singletonData = _singletonData;
初始化
static Singleton *sharedManager = nil;

+ (Singleton*)sharedManager
{
    static dispatch_once_t once;GCD提供的结构体,将参数地址传给函数
    dispatch_once(&once, ^{作用是只执行一次代码块,还是线程同步的
        sharedManager = [[self alloc] init];
    });
    return sharedManager;
}
UIApplication类:+shareApplication  
                        idleTimerDisabled属性:设定和获得“空闲时间禁止”
                        -openURL:打开一些内置的iOS应用
-stringByAddingPercentEscapesUsingEncoding:将字符串转换为URL编码
2 委托模式
  我们需要将看似功能很强但是很难维护的类,按照职责将他的属性或方法分派到各自的类或分解成功能明确的类。
  框架类:通用 可重复使用 与具体应用无关的特点,保持委托对象的指针,并在特定时间像委托对象发送消息。
  相关类:与具体应用有关,由于受到框架类的控制,应用相关类一般被设计成“协议”。
  委托对象与通用类建立引用关系:通用类实例对象.delegate=委托对象
  前三步:定义delegate属性用于保存委托对象的引用-建立委托协议.h
  后三步:声明实现委托-建立引用关系-实现委托方法
  委托方法命名:should消息应该返回一个布尔值,用于确定委托是否会响应消息
                      will/did
                      这三种方法都会把发送消息对象以参数的形式回传回来
3 观察者模式
   MVC模式中的重要组成部分,又叫发布/订阅模式
   1)通知机制
        接收者:注册通知-addObserver:selector:name:object:userInfo:
                    解除通知-removeObserver:
        投送对象:-postNotificationName:object:userInfo:字典对象
                      -postNotification:
        一般是程序进行到一个阶段时候需要通知其他对象做something
   2)KVO机制
       在对象属性变化时直接将通知发送给接收者
       属性变化的对象发送消息要求观察者开始观察属性变化:addObserver:
                                                                                 forKeyPath:属性
                                                                                      options:为属性变化设置的选项  NSKeyValueObservingOptions类型
                                                                                      context:上下文内容  是c语言任何指针类型
       观察者需要重写:-observeValueForKeyPath:ofObject:change:context:以响应属性的变化
4 MVC
   UIViewController是所有控制器的根类  UIView是所有视图和控件的根类
   因为我们要通过控制器更新视图和控件,所以需要将这些视图定义为输出口类型的属性
   模型对象可以通过通知机制来通知数据的变化
   视图控制器可以保存一个模型成员变量或属性,并通过他们改变模型的状态。
   

iOS开发指南 第8章 iOS常用设计模式 学习

标签:

原文地址:http://www.cnblogs.com/haugezi/p/4820608.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!