사용자가 함께 작업 목록을 작성하려고합니다. 이러한 작업 목록은 수백 또는 수천 개의 항목이 될 수 있습니다.msg_send 호출에 얼마나 많은 오버 헤드가 발생합니까?
바탕 화면에 대한NSArray *arrayOfTasks = .... init and fill with thousands of tasks
for (id *eachTask in arrayOfTasks)
{
if (eachTask && [eachTask respondsToSelector:@selector(execute)]) [eachTask execute];
}
, 이것은 아무 문제 없을 수 있지만, 아이폰 또는 아이 패드 :
내가 아는 바로는, 가장 쉽고 확실한 방법은 배열을 구축 한 다음 반복하는 것 , 이것은 문제 일 수 있습니다. 이것은 좋은 방법인가요? 아니면 같은 것을 성취하기위한 더 빠른 방법이 있습니까?
msg_send가 얼마나 많은 오버 헤드가 발생하는지 묻는 이유는 똑같은 C 구현을 수행 할 수도 있기 때문입니다. 예를 들어 링크 된 목록을 조합하고 블록을 사용하여 다음 작업을 처리 할 수 있습니다. 그로부터 무엇인가를 얻을 수 있습니까? 아니면 그 가치보다 더 큰 문제입니까?
'eachTask'가 nil이 아닌지 확인할 필요가 없습니다. 'respondToSelector :'는'eachTask'가 nil이거나'execute'에 응답하지 않으면 NO가됩니다. – dreamlax
어쨌든 NSArray에서 'nil'값을 얻지는 않을 것입니다. – kperryua
'id *'가 여기에 잘못되었습니다 – newacct