我试图拼凑在一起,并运行一个由用户放在一起的任务列表。这些任务列表可能长达数百或数千个项目。msg_send调用会产生多少开销?
据我所知,最简单,最明显的办法是建立一个数组,然后遍历它们:
NSArray *arrayOfTasks = .... init and fill with thousands of tasks
for (id *eachTask in arrayOfTasks)
{
if (eachTask && [eachTask respondsToSelector:@selector(execute)]) [eachTask execute];
}
对于台式机,这可能是没有问题的,但在iPhone或iPad这可能是一个问题。这是一个好方法吗?还是有更快的方法来完成同样的事情?
我之所以问msg_send发生了多少开销,是因为我也可以做一个直接的C实现。例如,我可以放置一个链表并使用一个块来处理下一个任务。我会从中得到什么,或者比它的价值更麻烦吗?
您不需要检查'eachTask'是否为非零。如果'eachTask'为零,或者它不响应'execute','respondsToSelector:'将导致NO。 – dreamlax 2010-06-03 07:49:39
无论如何,你不会从NSArray中获得“无”值。 – kperryua 2010-06-03 14:57:36
'id *'在这里写错了 – newacct 2012-09-17 22:26:59