0

请参考以下代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";    
    UITableViewCell *cell = (UITableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
                              reuseIdentifier:CellIdentifier];
    [cell setSelectionStyle:UITableViewCellSelectionStyleNone];
     }

 //... some other code 
 if (imageLoadingQueue == nil) {
    imageLoadingQueue = [[NSOperationQueue alloc] init];
    [imageLoadingQueue setName:@"Image Loading Queue"];
}
//... some other code 

return cell;
}

现在我们知道- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath每次滚动时都会调用该方法,但要引用条件:if (cell == nil)& if (imageLoadingQueue == nil)。这种情况会被反复检查。

所以我想知道如果条件成本有多少性能开销?

编辑:我们如何衡量?任何工具?

4

1 回答 1

4

if声明本身可以忽略不计。语句中使用的条件可能很重要(如 中),但在这种情况下并非如此,只需根据值检查指针。ifif (somethingThatTakesTenSeconds()) ...nil

无论如何,这无关紧要。如果您需要选择是否发生某事,则必须使用选择语句,无论是ifselect还是三元运算。所以它有多繁重并没有真正进入等式。

于 2013-04-10T07:28:29.977 回答