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

}}

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

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

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

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

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

优质内容筛选与推荐>>
1、09-异常处理
2、关于dropdwonlist无法获得值问题
3、ASP.NET下FCKeditor配置方法全解
4、Number of Digit One
5、还原种子数据库练习


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号