关于NSTask的程序结构

时间:2010-02-26 15:16:15

标签: cocoa nstask

我想在NSTasks上运行未知量(在编译时未知),我想同时运行未知量(同样,在编译时,最多8个)。所以基本上我循环遍历一个文件列表,生成一个NSTask,运行它直到运行最多的同步任务,并且每当完成另一个NSTask时,直到所有这些任务完成为止。

我的方法是创建一个生成NSTask的类,并将其子类化,以便在有不同的输入(从接口进行更改)时更改参数。然后超类将运行NSTask并将有一个@synthesize方法返回其进度。这些对象将在上面的重复循环中生成,并显示进度。

这是一个好方法吗?如果是这样,有人能给我一个关于重复循环看起来如何的快速示例吗?我不知道一旦它们运行就会引用所有对象。

for (; !done ;) {
    if (maxValue ≥ currentValue) {
  //Run Object with next file.
  //Set currentValue.
 }
 //display progress and set done to YES if needed and set currentValue to it -1 if needed
}

提前致谢。

1 个答案:

答案 0 :(得分:2)

没有完全没有循环。

为尚未启动的任务创建数组,为正在运行的任务创建另一个数组,为已完成的任务创建另一个数组。有一个方法可以从待处理任务数组中提取一个任务,启动(启动)它,并将其添加到running-tasks数组中。创建数组并填写pending-tasks数组后,调用该方法八次。

a task finishes时,从running-tasks数组中删除任务并将其添加到finished-tasks数组,然后检查是否还有任何任务要运行。如果至少有一个,请再次调用run-another-one方法。否则,检查是否还有正在运行:如果没有,所有任务都已完成,您现在可以汇总结果(如果您没有实时显示它们)。