文件下载是app中常用的一个需求场景。需要在下载过程中显示下载进度,并在下载完成时进行处理。可以使用观察者模式来进行处理。
本文包括下述三个部分:
- 观察者模式简介
- 文件下载监控中的使用
- 其它注意事项
一 观察者模式简介
观察者模式是行为模式中的一种,观察者监听被观察者的属性等变化。它允许定义一对多的依赖关系,让多个观察者同时监听一个对象。苹果Cocoa框架中通过3种方式实现了该模式:通知,KVO(Key value observing)及Delegate。
1 通知 NSNotificationCenter
[NSNotificationCenter defaultCenter]
获取一个NSNotificationCenter实例。
1.1 添加观察者:
- (void)addObserver:(id)observer selector:(SEL)aSelector name:(nullable NSString *)aName object:(nullable id)anObject;
- (id <NSObject>)addObserverForName:(nullable NSString *)name object:(nullable id)obj queue:(nullable NSOperationQueue *)queue usingBlock:(void (^)(NSNotification *note))block NS_AVAILABLE(10_6, 4_0);
// The return value is retained by the system, and should be held onto by the caller in
// order to remove the observer with removeObserver: later, to stop observation.
1.2 发出通知
- (void)postNotificatio