Ios 传递给需要非Null参数的被调用方的Xcode 7 Null
我更新了xcode 7并给出了这个错误 传递给需要非Null参数的被调用方的NullIos 传递给需要非Null参数的被调用方的Xcode 7 Null,ios,xcode,Ios,Xcode,我更新了xcode 7并给出了这个错误 传递给需要非Null参数的被调用方的Null _recorder = [[AVAudioRecorder alloc]initWithURL:[NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/%@.%@", [NSHomeDirectory() stringByAppendingString:@"/Documents"], name, extension]] settings:nil error
_recorder = [[AVAudioRecorder alloc]initWithURL:[NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/%@.%@", [NSHomeDirectory() stringByAppendingString:@"/Documents"], name, extension]] settings:nil error:nil];
一种简单的检查方法是使用
显示完成情况
-转到方法名称并按Ctrl空格键,或在菜单编辑器中按Ctrl键
显示完成情况
。一扇窗户会弹出。查找带有(非空)
的条目-这些条目不得为nil
。例如:
我在[NSString stringWithFormat:…]中按了Ctrl空格键,光标位于。正如您所看到的,许多参数都标记为(非null)
当您在方法调用中显式传递nil
时,您已经发现了问题。如果您传递了一个变量,请检查该变量当时是否为nil
。如果让您烦恼的是警告,您可以使用此-Wnonnull
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wnonnull"
_recorder = [[AVAudioRecorder alloc]initWithURL:[NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/%@.%@", [NSHomeDirectory() stringByAppendingString:@"/Documents"], name, extension]] settings:nil error:nil];
#pragma clang diagnostic pop
我在使用自定义完成处理程序时遇到此问题。传递处理程序的nil值时出现警告。因此,我添加了带补全的\uu nullable
typedef void (^ __nullable completionHandler)(void);
显示完整的错误消息和堆栈跟踪。无错误只是警告如下:Null传递给需要非Null argumentOK的被调用方,请将该语句拆分为单独的语句。这样,您就可以在调试器中检查哪个是nil
,并真正了解它的功能。你在用这么长的复合语句为自己的后背做一根棒子。“Esc”代替了Ctrl空格键(更容易击中)@Mindaugas啊是的-我记得,“Esc”-弹出框让我很恼火:-)