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


    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];

     

     

  • 相关阅读:
    17岁韩寒在CCTV《对话》舌战群吊的视频
    在线LaTex编辑器
    PowerShell 点滴记录
    程序阅读理解题目(高中语文版,附答案)
    jQuery Validate 应用
    ASP.net MVC 向子视图传递数据
    分库分表(sharding)后主键全局唯一性的解决方案
    Ajax局部刷新例子
    限制 Flash 在指定域名/网址中播放 (Flash 防盗链)
    javascript实现二级联动下拉框
  • 原文地址:https://www.cnblogs.com/shaoting/p/4857551.html
Copyright © 2020-2023  润新知