【问题标题】:getting error - 'control reaches end of non-void function'出现错误 - '控制到达非无效函数的结尾'
【发布时间】:2010-01-07 05:05:16
【问题描述】:

嘿,在带有 } 的行上出现此错误“控制到达非无效函数的末尾”。 我究竟做错了什么? 请帮忙

(NSString *)tableView:(UITableView *)tableView         titleForHeaderInSection:(NSInteger)section {
 NSLog(@"Here16");
 if (section == 0) {
  return @"A";
 }

 if (section == 1) {
  return @"B";
 }
 if (section == 2) {
  return @"C";
 }
 if (section == 3) {
  return @"D";
 }
 if (section == 4) {
  return @"E";
 }
 if (section == 5) {
  return @"F";
 }
 if (section == 6) {
  return @"G";
 }
 if (section == 7) {
  return @"H";
 }
 if (section == 8) {
  return @"I";
 }
 if (section == 9) {
  return @"J";
 }
 if (section == 10) {
  return @"K";
 }
 if (section == 11) {
  return @"L";
 }
 if (section == 12) {
  return @"M";
 }
 if (section == 13) {
  return @"N";
 }
 if (section == 14) {
  return @"O";
 }
 if (section == 15) {
  return @"P";
 }
 if (section == 16) {
  return @"Q";
 }

 if (section == 17) {
  return @"R";
 }
 if (section == 18) {
  return @"S";
 }
 if (section == 19) {
  return @"T";
 }
 if (section == 20) {
  return @"U";
 }
 if (section == 21) {
  return @"V";
 }
 if (section == 22) {
  return @"V";
 }
 if (section == 23) {
  return @"W";
 }
 //if (section==0) {
  //return @"X";
 //}
 if (section == 24) {
  return @"Y";
 }
 if (section == 25) {
  return @"Z";
 }

 //NSLog(@"%d", [listOfItems count]);



 NSLog(@"That whole error thing");
}

【问题讨论】:

    标签: iphone


    【解决方案1】:

    如果您收到的信件不在您的选择范围内,则不会有任何回报。 (它可能永远不会发生,但这是一个警告……)

    尝试在方法末尾添加return nil;

    【讨论】:

    • 这在崩溃日志中给了我这个 2010-01-07 18:15:19.036 FlagLearner[13310:207] *** -[NSCFString objectForKey:]: unrecognized selector sent to instance 0x3814530 2010- 01-07 18:15:19.039 FlagLearner[13310:207] *** 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“***-[NSCFString objectForKey:]:无法识别的选择器发送到实例 0x3814530”2010-01 -07 18:15:19.047 FlagLearner[13310:207] 堆栈:([为评论空间删除堆栈])
    • 通过 samstrixapps@gmail.com 给我发电子邮件以获取源代码。我希望你看看它!
    【解决方案2】:

    为什么不创建一个临时变量来保存您要返回的值,然后返回该变量?

    NSMutableString *theString = [NSMutableString stringWithString:@" "];    
    if (section == 0)     
    {      
      [theString setString:@"A"]    
    }    
    else if(section == 1)    
    {    
      [theString setString:@"B"]    
    }
    
    .....etc.....
    
    return theString;
    

    注意使用 Else If - 在您现有的代码中,将检查每个条件,这是非常低效的。如果满足第一个条件,则其他条件都不为真,因此使用 Else If 会使程序浪费时间检查它们。

    这基本上告诉我你需要回去重新学习一些编程基础知识。

    【讨论】:

    • +1 表示“重新学习一些编程基础知识”。我可以想到至少一两种更有效的方法(通过简单的算术,或者如果 sdk 不提供,通过转换表)
    【解决方案3】:

    尝试插入类似的内容:

    return @"";
    

    就在结束括号之前。

    不过,使用switch 之类的东西看起来更漂亮也可以实现同样的效果。

    【讨论】:

    • 这在崩溃日志中给了我这个 2010-01-07 18:15:19.036 FlagLearner[13310:207] *** -[NSCFString objectForKey:]: unrecognized selector sent to instance 0x3814530 2010- 01-07 18:15:19.039 FlagLearner[13310:207] *** 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“***-[NSCFString objectForKey:]:无法识别的选择器发送到实例 0x3814530”2010-01 -07 18:15:19.047 FlagLearner[13310:207] 堆栈:([为评论空间删除堆栈])
    • 一个 switch 是如下形式的语句: switch(integerVar){ case 1: NSLog(@"1");休息;案例2:NSLog(@"2");休息; default: NSLog(@"我们一直到默认!"); }
    猜你喜欢
    • 2017-12-09
    • 1970-01-01
    • 1970-01-01
    • 2016-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    相关资源
    最近更新 更多