我开发了一个iOS应用程序,其中包含:
NSError *error;
替代以下内容:
NSError *error = nil;
在模拟器和连接的设备上进行调试时,一切正常。然而,当我将其打包并通过TestFlight部署进行测试时,崩溃日志中开始出现“未知信号”错误。为什么会这样呢?
NSError *error;
...这是声明并赋值变量
NSError *error = nil;
当你第一次使用它并尝试在没有设置它的情况下访问它时,它指向的值被称为“垃圾”。它是指向某些其他内存堆栈的指针,访问它几乎总会导致应用程序崩溃。因此,最好的做法是像上面那样或稍后将一个值赋给变量。
NSError
变量。如果没有错误,API不能保证错误变量的值。不能仅仅因为将变量设置为nil并通过调用更改了它就依赖于是否出现错误。因此,将其设置为nil既无益也无害。 - zaphNSError
的描述中可以得知:"通常情况下,方法应该通过返回 NO 或 nil 等方式来表示错误条件,而不是简单地返回一个错误对象。" 依赖返回的错误代码总是安全的,但依赖 NSError
对象可能是安全的也可能不安全,这是一种选择。 - zaph
NSLog(@“error:%p”,error);
- bneely