【问题标题】:why function doesn't return true? [closed]为什么函数不返回true? [关闭]
【发布时间】:2013-10-11 00:52:56
【问题描述】:

我有一个函数可以检查参数中的UISwitch是否开启,如果开启则返回true。我有一个 if 语句来检查函数是否返回 true,如果它实际上是 true,它应该 nslog,但它没有。关于为什么当我按下开关时它不运行的任何想法?这就是我正在做的事情:

-(BOOL)switched:(UISwitch *)currentSwitch{
    return NO;
    if([currentSwitch isOn]){
        return YES;
    }
}

viewWillDisappear{
    if([self switched:campSwitch] == YES){
        NSLog(@"THE FUNCTION RETURNED TRUE");
    }
}

【问题讨论】:

  • 呃,把return NO语句移到条件下面?
  • 为什么不直接使用if (campSwitch.on)
  • 不要对那个感到太难过。我记得有一个人赢得了 1000 美元的赏金(当时那是一大笔钱),因为他发现了一个“阻止”错误,结果证明是在方法入口处的回报。
  • 这个问题已经解决了,现在应该关闭,因为它是基于一个错字,对未来的读者没有用处。

标签: ios objective-c cocoa-touch uiswitch


【解决方案1】:

将您的代码更改为以下内容:

-(BOOL)switched:(UISwitch *)currentSwitch{
    return [currentSwitch isOn];
}

【讨论】:

  • 返回属性的函数?虽然他的问题在技术上是正确的,但退后一步,我认为答案是该函数根本没有用。
  • @Joel:我打算将该功能用于多个开关。显然,如果我不是,那么创建它就毫无意义。
  • @Josue 每个开关都具有该属性。您需要为多个开关访问该属性这一事实并不意味着您需要一个函数来执行此操作。还是没有意义。
  • 没错,你用三行替换了一行(包括定义和大括号),所以你没有为自己节省任何东西
【解决方案2】:
-(BOOL)switched:(UISwitch *)currentSwitch{
    return [currentSwitch isOn];
}

-(void)viewWillDisappear:(BOOL)animated{
    if([self switched:mySwitch]){
        [self saveToCoreData];
        NSLog(@"mySwitch was on.");
    }
}

【讨论】:

  • 为什么要调用这一行函数呢?只需输入 if ([mySwitch isOn]) {}
  • @Joel:因为我要为多个开关使用该功能,所以我只是测试一个以确保它正常运行。
  • 这并没有改变我评论的重点。您正在调用一个函数来返回一个属性。这是没有意义的。
  • 我没有让函数变得有用,我正在学习objective-c并且正在尝试BOOL函数,这就是为什么我上面有一个简单的错误。
猜你喜欢
  • 2017-01-14
  • 1970-01-01
  • 2018-01-28
  • 1970-01-01
  • 2018-12-08
  • 1970-01-01
  • 2016-06-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多