私のアプリケーションは、2つの方法で接触しているすべての人を読み取ります。
forループ:
CFAbsoluteTime startTime = CFAbsoluteTimeGetCurrent ();
long count = macContact.addressBook.people.count;
for(int i=0;i<count;++i){
ABPerson *person = [macContact.addressBook.people objectAtIndex:i];
NSLog(@"%@",person);
}
NSLog(@"%f",CFAbsoluteTimeGetCurrent() - startTime);
for-each
CFAbsoluteTime startTime = CFAbsoluteTimeGetCurrent ();
for(ABPerson *person in macContact.addressBook.people){
NSLog(@"%@",person);
}
NSLog(@"%f",CFAbsoluteTimeGetCurrent() - startTime);
for-eachはaddressBookで5000人を列挙するのに4秒しかかかりませんでしたが、for-loopは同じ仕事をするのに10分かかりました。
なぜパフォーマンスに大きな違いがあるのか知りたいのですが?