优化Cocoa中的测试

时间:2012-11-26 12:33:56

标签: objective-c optimization

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

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

而不是

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

1 个答案:

答案 0 :(得分:0)

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

此更改使代码更具可读性:首先,您可以命名从容器中提取的内容(如testName)。其次,在阅读对objectAtIndex的两次重复调用时,您必须确保它的代码真的相同。在你引入单独的变量后,很明显,认知负荷较少。