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];
}}
你必须在某个观察者类里面实现这个方法。这个系统执行这个方法每次你观察你的属性改变的时候。上面的代码。当你图片属性改变的时候这个网络提示器就会改变。
编译运行你的应用这个网络提示器消失了。
注意:记得要删除你的观察家们当他们收回,否则你的应用程序会崩溃当系统试图将消息发送到这些不存在的观察者!
如果你在你的应用程序并终止它,你会注意到你的应用程序的状态并没有保存。最后一个相册你看不会应用程序启动时的默认专辑。
为了纠正他你需要用下一个设计模式备忘录设计模式。