文档章节

【非凡程序员】设计模式,kvc,kvo

duuuuuuuuxuan
 duuuuuuuuxuan
发布于 2015/06/03 18:24
字数 556
阅读 4
收藏 0
  1. 单例模式

1.设计模式就是被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结.
主要分类
创建模式 结构模式 行为模式
总共为23种设计模式

2.单例模式
也就是C中的全局变量,在整个程序生命周期内,该对象只有一份存在内存中,
可以在多个对象之间共享数据

static id myManager;
+ (id) themeManager{
if (myManager == nil ){
myManager = [[self alloc] init];
}
return myManger;
}


2.代理模式

1.就是委托别人帮你干什么,中间加上双方共同遵守的协议,就是代理。

2.用于对象之间的通信。

3.简化了对象的行为,最大化减小对象之间的耦合度   使用代理,一般来说无需子类化,简化了我们应用 程序的开发,既容易实现,而且灵活。

4.
声明代理@property (nonatomic,strong) id <协议名>对象名;
调用代理 [self. 对象名 cure];
借用医生治病案例 最后绑定代理,让医生为病人看病。

练习:
医生治病
闹钟定时器

闹钟定时器

用到代理模式,NSTimer , NSDate 

NSDate *date1=[NSDate date];
    NSDateFormatter *date=[[NSDateFormatter alloc]init];
    [date setDateFormat:@"现在的时间是 HH时mm分"];
    NSString *str1=[date stringFromDate:date1];

NSTimer 先在类.h 里面声明 

@property (nonatomic , assign)NSTimer *times;

实现

_times = [NSTimer scheduledTimerWithTimeInterval:1.0F target:self selector:@selector(knock) userInfo:nil repeats:YES];

停止

[_times invalidate];


2.KVC的学习   KVC- 键值编码

获取与修改值

valueForKey:

valueForKeyPath:

setValue:forKey:

setValue:forKeyPath: 

调用这些方法,向对象发送消息,并传递想要访问的属性名称的键做参数。

3.KVO - 键值监听

制定对象的属性被修改了以后,则对象会收到通知。

a.注册

增加一个观察者

[_children addObserver:self forKeyPath:"hapyValue" options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld context:"context”];

b.回调

在类里面实现 

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(voidvoid *)context

c.修改值

d.销毁

[_children removeObserver:self forKeyPath:@“hapyValue”];

注意:增加观察对象与取消观察对象一定是成双成对出现的

多态:父类指针指向子类


© 著作权归作者所有

duuuuuuuuxuan
粉丝 2
博文 2
码字总数 1243
作品 0
西安
私信 提问
教程1:Objective-C

Objective-C的教程已经看过了。 内容大概有:[Objective-C基础语法(if/else/switch/for...),关键字,运算符],[面向对象(封装/继承/多态)],[Foundation框架常用类],[内存管理],[协...

殷美洪
2013/03/11
268
0
总结一些IOS的面试题吧~不定期更新~附带个人理解的“参考”答案哈

除了MVC模式 你还熟悉什么设计模式 代理模式:当一个类的某些功能需要由别的类实现,但是又不确定具体是哪个类实现的 单例模式:当确保程序运行期间,某个类只有一份实例,用于进行资源共享 ...

RainOrz
2015/08/18
52
0
设计模式(Swift) - 3.观察者模式、建造者模式

上一篇 设计模式(Swift) - 2.单例模式、备忘录模式和策略模式中讲了三种常见的设计模式. 单例模式: 限制了类的实例化,一个类只能实例化一个对象,所有对单例对象的引用都是指向了同一个对象....

Dariel
2018/07/01
0
0
【非凡程序员】 OC第十五节课 (观察者模式和KVO进行对比)

今天主要学了观察者模式,以及回顾复习了KVO,两者进行对比 什么是观察者模式? 我们先打个比方,这就像你订报纸。比如你想知道美国最近放生了些新闻,你可能会订阅一份美国周刊,然后一旦美...

七月流火zsp
2015/06/05
101
0
iOS设计模式--适配器模式与观察者模式

何为适配器模式? 适配器模式,可以这么说,用于连接两种不同种类的对象,使其毫无问题地协同工作。有时它也称为包装器。其思想相当简单,适配器实现客户端所要的某种接口的行为,同时,它又...

国士梅花
2015/08/20
437
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周日乱弹 —— 我,小小编辑,食人族酋长

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @宇辰OSC :分享娃娃的单曲《飘洋过海来看你》: #今日歌曲推荐# 《飘洋过海来看你》- 娃娃 手机党少年们想听歌,请使劲儿戳(这里) @宇辰OSC...

小小编辑
今天
226
9
MongoDB系列-- SpringBoot 中对 MongoDB 的 基本操作

SpringBoot 中对 MongoDB 的 基本操作 Database 库的创建 首先 在MongoDB 操作客户端 Robo 3T 中 创建数据库: 增加用户User: 创建 Collections 集合(类似mysql 中的 表): 后面我们大部分都...

TcWong
今天
2
0
spring cloud

一、从面试题入手 1.1、什么事微服务 1.2、微服务之间如何独立通讯的 1.3、springCloud和Dubbo有哪些区别 1.通信机制:DUbbo基于RPC远程过程调用;微服务cloud基于http restFUL API 1.4、spr...

榴莲黑芝麻糊
今天
2
0
Executor线程池原理与源码解读

线程池为线程生命周期的开销和资源不足问题提供了解决方 案。通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上。 线程实现方式 Thread、Runnable、Callable //实现Runnable接口的...

小强的进阶之路
昨天
6
0
maven 环境隔离

解决问题 即 在 resource 文件夹下面 ,新增对应的资源配置文件夹,对应 开发,测试,生产的不同的配置内容 <resources> <resource> <directory>src/main/resources.${deplo......

之渊
昨天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部