我試圖拼湊在一起,並運行一個由用戶放在一起的任務列表。這些任務列表可能長達數百或數千個項目。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