gpt4 book ai didi

objective-c - 由于 if/else 语句中的返回,Xcode 认为控制可能到达非空函数的结尾

转载 作者:太空狗 更新时间:2023-10-30 03:56:44 25 4
gpt4 key购买 nike

这是一个简单的问题:为什么下面的代码会导致“Control may reach end of-non-void function”警告?什么情况下两个 return 语句之一不会被命中?将第二个 return 语句放在 else block 之外是否是更标准的编码实践?这确实消除了警告,但我很好奇它为什么存在。

- (CGFloat) tableView: (UITableView *) tableView heightForRowAtIndexPath: (NSIndexPath *) indexPath
{
NSString *lineToFit = [[self.fetchedResultsController objectAtIndexPath: indexPath] line];
NSString *actorToFit = [[self.fetchedResultsController objectAtIndexPath: indexPath] actor];
CGSize lineSize = [lineToFit sizeWithFont: [UIFont boldSystemFontOfSize: 12.0f] constrainedToSize: CGSizeMake(320, 800)];
CGSize actorSize = [actorToFit sizeWithFont: [UIFont boldSystemFontOfSize: 12.0f] constrainedToSize: CGSizeMake(320, 800)];

if (shouldDisplayExtra) {
kExtraCellType cellType = [self cellIsGoingToContainExtraView];
if (cellType != kExtraCellTypeNone) {
[cellsToContainExtra setValue: [NSNumber numberWithInt: cellType] forKey: lineIDString];
return lineSize.height + actorSize.height + 200;
}
} else {
// Return the line height, actor height, plus a buffer.
return lineSize.height + actorSize.height;
}
}

最佳答案

您确实有导致无法返回的情况:

如果 shouldDisplayExtra 存在并且 cellType == kExtraCellTypeNone 则没有返回定义...

您应该在条件语句中添加一个 else block :

    if (cellType != kExtraCellTypeNone) {
[cellsToContainExtra setValue: [NSNumber numberWithInt: cellType] forKey: lineIDString];
return lineSize.height + actorSize.height + 200;
} else {
// return something here
}

关于objective-c - 由于 if/else 语句中的返回,Xcode 认为控制可能到达非空函数的结尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15248406/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com