一、单例模式
1. 什么是单例模式?
在iOS应用的生命周期中,某个类只有一个实例。
2. 单例模式解决了什么问题?
想象一下,如果我们要读取文件配置信息,那么每次要读取,我们就要创建一个文件实例,然后才能获取到里面的相关配置信息,这样如果,我们如果要多次读取这个文件的配置信息,那就要创建多个实例,这样严重浪费了内存资源。而实际应用中,当我们要用到的类可能是要反复用到的,一般可以考虑使用单例模式。这样可以大大降低创建新实例带来的内存浪费。
3. 单例模式的实现原理
一般会封装一个静态属性,并提供静态实例的创建方法(该方法瞎用GCD技术保证了整个程序生命周期只运行一次:dispath_once())。
4. 应用实例
- UIApplication:提供应用程序的集中控制点来保持应用的状态。
- NSUserDefaults:读取应用设置项目。
- NSNotificationCenter:提供信息广播通知。
- NSFileManager:访问文件系统的通用操作。
- NSBundle:动态加载或卸载可执行代码,定位资源文件,资源本地化和访问文件系统等。
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"www.baidu.com"]]; NSFileManager *FileManager = [NSFileManager defaultManager];
二、委托模式
1. 什么是委托模式?
- 基本框架类+协议+委托对象
- 把看似功能很强且很难维护的类,按照职责功能将它抽取出来成为协议,委托其他对象帮自己实现协议中的方法
2. 委托模式解决了什么问题?
委托时为了降低一个对象的复杂度和耦合度,使其主要框架类能够具有通用性,其他旁枝末节的方法留给委托对象去实现。
3. 委托模式的实现原理
- 框架类通过delegate属性保持对委托对象的引用,并在特定时刻向委托对象发送消息,通知其做一些事情。
- 委托对象需符合两个条件:1. 遵循协议 2. 设置为框架类的委托
4. 应用实例
UITextFieldDelegate
#import "ViewController.h" @interface ViewController () <UITextFieldDelegate> @property (strong, nonatomic) UITextField *textField; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. self.textField.delegate = self; } @end
三、观察者模式
1. 什么是观察者模式?
观察者模式也叫发布/订阅模式。比如订阅天气预报,其中有如下三个角色:
- 气象局
- 中国移动短信中心
- 手机用户
第一步:手机用户订阅中国移动短信中心的天气预报业务。
第二步:下雨时,气象局发布一条信息给中国移动短信中心:“有雨”
第三步:手机用户就会收到中国移动短信中心的信息:“有雨”,接着用户就会知道应该采取什么的动作:“出门带伞”
气象局与用户之间的通信是匿名的,用户只知道是中国移动发的短息,不知道气象局的存在。
2. 观察者模式解决了什么问题?
消除具有不同行为的对象之间的耦合,通过这一模式,不同对象可以协同工作,同时它们也可以被复用于其他地方
3. 观察者模式的实现原理
时间: 2024-08-08 20:56:54