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

iOS常用设计模式:MVC、单例、代理、观察者。

时间:2015-10-06 19:34:34      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:

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自动通知相应的观察者。

  1. 注册观察者[message addObserver:self forKeyPath:kKVOPathKey options:NSKeyValueObservingOptionNew context:Nil];
  2. 更改主题对象属性的值,即触发发送更改的通知 _message.key = @"asdfasd";
  3. 在制定的回调函数中,处理收到的更改通知
    1
    2
    3
    4
    5
    6
    - (void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
    {
     if ([keyPath isEqual:kKVOPathKey] &amp;&amp; object == _message) {
         NSLog(@"get %@",change);
     }
    }
  4. 注销观察者 [_message removeObserver:self forKeyPath:kKVOPathKey];

 

 

 

iOS常用设计模式:MVC、单例、代理、观察者。

标签:

原文地址:http://www.cnblogs.com/shaoting/p/4857551.html

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