1

在运行应用程序之前,我收到错误消息“使用 NULL 比较点和整数('int' 和 'void *')”。奇怪的是应用程序每次都运行完美。这是代码片段。

- (IBAction) addButtonAction:(id)sender
{
    int timeStamp = nil;

    timeStamp = self.hourTextField.intValue;


    if (timeStamp == NULL) {
        NSLog(@"Nothing here for ya");
    }
    else {
        NSLog(@"monkey shit");
    }

}

我在线上得到错误。

    if (timeStamp == NULL) {
4

1 回答 1

8

NULL 仅用于指针比较。timeStamp是一个 int,而不是一个指针,所以比较没有意义。编译器看到与 NULL 的比较并说:“也许他认为 timeStamp 是一个指针,但事实并非如此,所以我最好警告他”。在这种情况下,您可能要检查timeStamp为零

if (timeStamp == 0) {
    NSLog(@"Nothing here for ya");
}

实际上,这实际上就是您的代码现在正在做的事情,因为实际上NULL 0。

另外值得注意的是编译器发出的是警告,而不是错误。重要的区别是警告是编译器认为可能是错误的东西,但不会阻止程序编译。错误实际上会阻止编译器完成其工作,并导致编译失败。你永远不应该忽视警告。您可以告诉编译器将警告视为错误,以对自己进行纪律处分。

于 2013-03-01T17:45:29.623 回答