我想在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
}
提前致谢。
答案 0 :(得分:2)
没有完全没有循环。
为尚未启动的任务创建数组,为正在运行的任务创建另一个数组,为已完成的任务创建另一个数组。有一个方法可以从待处理任务数组中提取一个任务,启动(启动)它,并将其添加到running-tasks数组中。创建数组并填写pending-tasks数组后,调用该方法八次。
当a task finishes时,从running-tasks数组中删除任务并将其添加到finished-tasks数组,然后检查是否还有任何任务要运行。如果至少有一个,请再次调用run-another-one方法。否则,检查是否还有正在运行:如果没有,所有任务都已完成,您现在可以汇总结果(如果您没有实时显示它们)。