一、引言
在iOS7之前,系统一直没有提供一个完整的框架来描述任务进度相关的功能。这使得在开发中进行耗时任务进度的监听将什么麻烦,在iOS7之后,系统提供了NSProgress类来专门报告任务进度。
二、创建单任务进度监听器
单任务进度的监听是NSProgress最简单的一种运用场景,我们来用定时器模拟一个耗时任务,示例代码如下:
@interface ViewController ()
{
NSProgress * progress;
}
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
//这个方法将创建任务进度管理对象 UnitCount是一个基于UI上的完整任务的单元数
progress = [NSProgress progressWithTotalUnitCount:10];
NSTimer * timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(task) userInfo:nil repeats:YES];
//对任务进度对象的完成比例进行监听
[progress addObserver:self forKeyPath:@"fractionCompleted" options:NSKeyValueObservingOptionNew context:nil];
}
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
NSLog(@"进度= %f",progress.fractionCompleted);
}
-(void)task{
//完成任务单元数+1
if (progress.completedUnitCount