0

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

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

代替

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

1 回答 1

0

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

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

于 2012-11-26T12:54:52.290 回答