一鹰贵、引言
在iOS7之前欧募,系統(tǒng)一直沒有提供一個(gè)完整的框架來描述任務(wù)進(jìn)度相關(guān)的功能辰妙。這使得在開發(fā)中進(jìn)行耗時(shí)任務(wù)進(jìn)度的監(jiān)聽將什么麻煩鹰祸,在iOS7之后,系統(tǒng)提供了NSProgress類來專門報(bào)告任務(wù)進(jìn)度密浑。
二蛙婴、創(chuàng)建單任務(wù)進(jìn)度監(jiān)聽器
單任務(wù)進(jìn)度的監(jiān)聽是NSProgress最簡單的一種運(yùn)用場景,我們來用定時(shí)器模擬一個(gè)耗時(shí)任務(wù)尔破,示例代碼如下:
@interface ViewController ()
{
NSProgress * progress;
}
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
//這個(gè)方法將創(chuàng)建任務(wù)進(jìn)度管理對(duì)象 UnitCount是一個(gè)基于UI上的完整任務(wù)的單元數(shù)
progress = [NSProgress progressWithTotalUnitCount:10];
NSTimer * timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(task) userInfo:nil repeats:YES];
//對(duì)任務(wù)進(jìn)度對(duì)象的完成比例進(jìn)行監(jiān)聽
[progress addObserver:self forKeyPath:@"fractionCompleted" options:NSKeyValueObservingOptionNew context:nil];
}
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
NSLog(@"進(jìn)度= %f",progress.fractionCompleted);
}
-(void)task{
//完成任務(wù)單元數(shù)+1
if (progress.completedUnitCount