我遇到了一个非常奇怪的问题,经过几个月的测试刚刚发生,因为我正要提交应用程序。不设置NSError为零产生崩溃
我有folliwing方法,它需要一些JSON数据并将其转换为一个字典:
NSError *e;
NSMutableDictionary *result= [NSJSONSerialization JSONObjectWithData:jsonData
options:NSJSONReadingMutableContainers error:&e];
if (e != nil) return nil;
在过去的几个月中,这种方法已被用来不停,绝对没有问题。但直到今天,它才停止工作。它现在总是导致错误(没有描述;只是一个非nill错误)。
事实证明,我所要解决的问题都是设置为NSError *e = nil;
。我认为这只是一个很好的做法,并非绝对重要。这让我害怕。我想知道我在代码中做了多少次。任何人都可以解释可能会发生什么?
此外,我正在使用ARC,我猜这使得更奇怪的是,这种情况正在发生。
e是一个局部变量,它在创建时不会自动初始化。它可能是碰巧为零,并且在你的应用程序发展后,它得到了一些不同的随机值。在e是财产而不是本地变量的情况下,如果没有你做任何事情,它应该是无效的。之后,调用JSONObjectWithData并且没有发生错误,e完全不被触及,并保留其初始“值”。这是基本的。 –