2012-11-26 33 views
0

在这个简单的测试中,在确定索引有效之后,是否值得分配一个变量而不是调用两次objectAtIndex:method?在Cocoa中优化测试

NSString *s = [myArray objectAtIndex:2]; 
if (s) { 
Test *t = [Test initFromString:s]; 
} 

代替

if ([myArray objectAtIndex:2]) { 
Test *t = [Test initFromString:[myArray objectAtIndex:2]]; 
} 

回答

0

从性能的角度来看这是不值得的,除非代码位于一个非常热的路径上(你会知道)。发送消息是practically free并且查找给定索引上的对象也太快而无法在大多数情况下关心。

但是,更改使代码更具可读性:首先,您可以命名从容器中取出的东西(如testName)。其次,当读取两个重复呼叫到objectAtIndex时,你必须确保它是真的相同的代码。在介绍单独的变量后,很明显,认知负荷较低。