设计模式是在特定场景下对特定问题的解决方案
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是所有视图和控件的根类
因为我们要通过控制器更新视图和控件,所以需要将这些视图定义为输出口类型的属性
模型对象可以通过通知机制来通知数据的变化
视图控制器可以保存一个模型成员变量或属性,并通过他们改变模型的状态。