在运行应用程序之前,我收到错误消息“点和整数之间的比较('int'和'void *')使用NULL”。奇怪的是应用程序每次运行都很完美。这是代码的片段。
- (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) {
答案 0 :(得分:6)
NULL仅用于指针比较。 timeStamp
是一个int,而不是一个指针,所以比较并没有多大意义。编译器看到与NULL的比较并说,“也许他认为timeStamp是一个指针,但它不是,所以我最好警告他”。在这种情况下,您可能想要检查timeStamp
是否零:
if (timeStamp == 0) {
NSLog(@"Nothing here for ya");
}
实际上,这实际上是您的代码现在正在做的事情,因为实际上NULL
是 0。
另外值得注意的是编译器发出警告,而不是错误。重要的区别在于警告是编译器认为可能是错误的事情,但不会阻止程序编译。错误实际上会阻止编译器执行其工作,并导致编译失败。你应该从不忽略警告。您可以告诉编译器treat warnings as errors,以强制自己管理。