2012-11-26 31 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時,你必須確保它是真的相同的代碼。在介紹單獨的變量後,很明顯,認知負荷較低。