zoukankan      html  css  js  c++  java
  • IOS设计模式第八篇之键值观察模式

    版权声明:原创作品,谢绝转载!否则将追究法律责任。

    键值观察模式:

    在KVO,一个对象可以要求被通知当他的某个特殊的属性被改变了。自己或者另一个对象。如果你感兴趣你可以阅读更多的信息参考: Apple’s KVO Programming Guide.

    怎么用KVO设计模式呢?

    正如上面提及到的。这个KVO机制允许一个对象观察一个属性的改变。在你的例子。你可以用KVO来观察你UIImageView图片属性的改变。

    打开AlbumView添加下面代码到initWithFrame:albumCover:在 [self addSubview:indicator];后面;

    [coverImage addObserver:self forKeyPath:@"image" options:0 context:nil];

    这个self是当前的类,作为一个观察coverImage Image属性的观察者。

    在本类销毁的时候你还需要注销观察者在AlbumView实现文件里面添加下面的代码:

    - (void)dealloc

    {

        [coverImage removeObserver:self forKeyPath:@"image"];

    }

    最后添加下面的方法:

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

    {

        if ([keyPath isEqualToString:@"image"])

        {

            [indicator stopAnimating];

        }}

    你必须在某个观察者类里面实现这个方法。这个系统执行这个方法每次你观察你的属性改变的时候。上面的代码。当你图片属性改变的时候这个网络提示器就会改变。

    编译运行你的应用这个网络提示器消失了。

    Image

    注意:记得要删除你的观察家们当他们收回,否则你的应用程序会崩溃当系统试图将消息发送到这些不存在的观察者!

    如果你在你的应用程序并终止它,你会注意到你的应用程序的状态并没有保存。最后一个相册你看不会应用程序启动时的默认专辑。

    为了纠正他你需要用下一个设计模式备忘录设计模式。

  • 相关阅读:
    几款开源的图形界面库(GUI Libraries)
    CMenu菜单
    开源免费的C/C++网络库(c/c++ sockets library) 七剑下天山
    基于MFC的ActiveX控件开发
    VC++中动态生成菜单技巧
    ActiveX控件打包成Cab置于网页中自动下载安装
    VC++API小查
    全面解析MFC应用程序中处理消息的顺序
    CMenu类的使用方法
    跨域单点登录实现(使用iframe)_勇敢的心_百度空间
  • 原文地址:https://www.cnblogs.com/qiqibo/p/3488775.html
Copyright © 2011-2022 走看看