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

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

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

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


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值