NSProgressIndicator在不循环时确定

时间:2014-06-19 21:10:02

标签: objective-c macos cocoa nsprogressindicator

我正在使用其他问题的代码,并且无法弄清楚如何实际“确定”某项任务可能需要多长时间。例如:

- (void)doSomething
{
    [showProgress startAnimation:nil];
    dispatch_queue_t backgroundQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
    dispatch_async(backgroundQueue, ^{
        for (NSUInteger i = 0; i < 100; i++) {

            // Do whatever it is you need to do

            [self goUnZipFiles]; // THIS COULD BE A 1MB FILE OR 3GB

            dispatch_async(dispatch_get_main_queue(), ^{
                [showProgress incrementBy:1.0];
            });
        }
        // Done with long running task
        dispatch_async(dispatch_get_main_queue(), ^{
            [showProgress stopAnimation:nil];
        });
    });
}

例如,问题是有一个任务解压缩一个可能是1 MB或3 GB的文件 - 我怎么能以编程方式确定以任何持续时间可能的平滑一致方式为指标设置动画的时间长度?感谢

0 个答案:

没有答案