MVC
模型-视图-控制器(MVC)设计模式
MVC根据角色划分类,涉及到三个角色:
Model:模型保存应用程序的数据。
View:视图是模型的可视化表示以及用户交互的控件。
Controller:控制器是一个协调所有工作的中介者。它访问模型中的数据并在视图中展示它们,同时它们还监听事件和操作数据。
单例设计模式
单例设计模式可以确保对于一个类只有一个实例(对象)存在,这个对象有一个全局的访问点。通常采用懒加载的方式在第一次用到对象的时候才去创建它。
如何创建一个单例:
如:在SortDetailsModelDown.h中声明类方法+(SortDetailsModelDown *)shareSortDetailsModelDown;
在SortDetailsModelDown.m中实现该方法
static SortDetailsModelDown * single = nil;
+(SortDetailsModelDown *)shareSortDetailsModelDown{
@synchronized(self){
if (!single) {
single = [[SortDetailsModelDown alloc]init];
}
}
return single;
}
代理
自定义协议:
代理:遵循协议的对象
第一步:制定协议:(协议名:类名+Delegate)
@class MyView; @protocol MyViewDelegate <NSObject> @required //必须实现的方法 -(void)changeViewBackgroudColor:(MyView *)view; @optional//可选方法 -(void)test; @end
第二步:制定代理
@interface MyView : UIView 第二步:指定代理 @property (nonatomic,assign)id<MyView> delegate; @end
第三步:代理遵循协议.
第四步:代理实现协议里面的必须实现的方法和其他可选方法.
第五步:委托方通知代理开始执行方法.
观察者
KVO Key-Value Observing.它是一种机制,当指定的对象的属性被修改后,KVO自动通知相应的观察者。
- 注册观察者
[message addObserver:self forKeyPath:kKVOPathKey options:NSKeyValueObservingOptionNew context:Nil];
- 更改主题对象属性的值,即触发发送更改的通知
_message.key = @"asdfasd";
- 在制定的回调函数中,处理收到的更改通知
12
3
4
5
6
- (
void
) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(
void
*)context
{
if
([keyPath isEqual:kKVOPathKey] && object == _message) {
NSLog(@
"get %@"
,change);
}
}
- 注销观察者
[_message removeObserver:self forKeyPath:kKVOPathKey];