我想知道isEqualToArray
实际上是做什么的...
我有一个大小为160的数组,每个数组包含一个包含11个条目的字典,但是我可以仅基于第一列(包含更改行的日期)进行比较。
现在,我可以使用一个简单的for周期做到这一点:
BOOL different = FALSE;
for (int index = 0 ; index < [newInfo count] ; ++index)
if (![[[oldInfo objectAtIndex:index] objectForKey:@"Update"] isEqual:[[newInfo objectAtIndex:index] objectForKey:@"Update"]]) {
different = TRUE;
break;
}
if (different) {
}
else
NSLog(@"Contact information hasn't been updated yet");
或者我可以使用内置的isEqualToArray方法:
if ([oldInfo isEqualToArray:newInfo])
NSLog(@"Contact information hasn't been updated yet");
else {
NSLog(@"Contact information has been updated, saving new contact information");
[newInfo writeToFile:path atomically:YES];
}
现在,如果假设
isEqualToArray
仅为每个单元格调用isEqualTo
,则for-loop方法的运行时间是isEqualToArray
的时间的1/11(只需要比较一列而不是11)。也许我在优化方面实在是太过费力了……(我参加过很多比赛,这些比赛的运行时间受到限制,并且我感到后遗症)。
最佳答案
当您知道两个对象都是数组时,isEqualTo<Class>
方法是检查相等性的一种比for循环更快的方法。isEqualTo<Class>
用于提供对相等性的特定检查。因此isEqualToArray:
检查数组包含相等数目的对象。
因此,据我所知,当您知道两个对象是数组时,可以说isEqualToArray
是更好的选择。