【问题标题】:Value Stored to 'valid' is never read [closed]存储到“有效”的值永远不会被读取[关闭]
【发布时间】:2013-01-17 10:20:55
【问题描述】:

我有一个验证方法,通过它我可以分析特定变量是否通过验证标准。

代码如下:

-(BOOL)validateFields{
    BOOL valid = FALSE;
    if (dateEntry != TRUE && saveOrderType != TRUE) {
        if (_editRequired==YES) {
            if ([[[editedTextField text] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] isEqualToString:@""]) {
                valid = FALSE;
            } else {
                valid = TRUE;
            }
        } else {
            valid = TRUE;
        }
        if (_editRegEx) {
            NSRegularExpression *regex = [NSRegularExpression
                                      regularExpressionWithPattern:_editRegEx
                                      options:NSRegularExpressionCaseInsensitive
                                      error:nil];
            if ([regex numberOfMatchesInString:[editedTextField text] options:0 range:NSMakeRange(0, [[editedTextField text] length])]==0) {
                valid=FALSE;
            } else {
                valid = TRUE;
            }
        } else {
            valid = TRUE;
        }

    } else {
        valid = TRUE;
    }
    return valid;
}

我得到了 3 个 Value stored to 'valid' is never read 实例,这很奇怪,因为最终它会在方法结束时返回。

我在设置变量的前三个实例中得到它,仅在这三个实例上:

if (_editRequired==YES) {
    if (//checks if the field contains any characters) {
        valid = FALSE;
    } else {
        valid = TRUE;
    }
} else {
     valid = TRUE;
}

有人可以帮忙吗?

【问题讨论】:

  • 我试图重现它,但它运行良好,没有任何错误。您能否发送一个包含该问题的示例项目?
  • 这里也一样。你能用实际代码替换它吗: if (//检查字段是否包含任何字符) {
  • 好的,我会用代码更新

标签: objective-c boolean dead-code


【解决方案1】:

您的if (_editRequired==YES) {} 条件完全被if (_editRegEx) {} 条件覆盖,因此前者中的任何分配都不会被使用:valid 总是在第二个条件中重新分配。

【讨论】:

  • 感谢您发现这一点。我只是完全删除了该变量,并在验证失败的地方返回 false。
【解决方案2】:

您收到此警告是因为您在 if/else 之后存储了其他值。 实际上,就在这之后,您还有另一个 if(用于测试 _editRegEx)并在所有情况下(if 和 else)都存储一个值。所以你的第一个 if 是不需要的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-22
    • 2011-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-11
    • 2018-07-26
    相关资源
    最近更新 更多