Iphone 使用电弧泄漏处理N错误

Iphone 使用电弧泄漏处理N错误,iphone,objective-c,ios,ipad,automatic-ref-counting,Iphone,Objective C,Ios,Ipad,Automatic Ref Counting,*anError=[[NSError alloc]initWithDomain:@my域代码:errorCode用户信息:userDict];编译器发出下一个泄漏警告 潜在的空解引用。根据“创建和返回N错误对象”中的编码标准,参数可能为空 如何修复此问题?您需要首先检查错误是零还是空: 您需要首先检查一个错误是nil还是NULL: 这实际上不是泄漏警告,而是空指针的潜在解引用。编译器正在抱怨这行代码 if (anError) { *anError = [[NSError alloc] i

*anError=[[NSError alloc]initWithDomain:@my域代码:errorCode用户信息:userDict];编译器发出下一个泄漏警告 潜在的空解引用。根据“创建和返回N错误对象”中的编码标准,参数可能为空
如何修复此问题?

您需要首先检查错误是零还是空:


您需要首先检查一个错误是nil还是NULL:


这实际上不是泄漏警告,而是空指针的潜在解引用。编译器正在抱怨这行代码

if (anError) {
    *anError = [[NSError alloc] initWithDomain:@"my domain" code:errorCode userInfo:userDict];
}

如果调用方对详细的错误信息不感兴趣,您可以在不检查的情况下将错误分配给错误所指向的位置,即根据编码标准,错误是否实际上是空指针,并且可能发生这种情况。

这实际上不是泄漏警告,而是空指针的潜在取消引用。编译器正在抱怨这行代码

if (anError) {
    *anError = [[NSError alloc] initWithDomain:@"my domain" code:errorCode userInfo:userDict];
}

您在不检查的情况下分配给一个错误指向的位置,如果调用方对详细的错误信息不感兴趣,那么根据编码标准,该错误是否实际上是允许的空指针,并且可能会发生。

尽管@Dirk的答案包含更多关于原因的信息,DarkDust的答案包含实际分辨率+尽管@Dirk的答案包含了更多关于为什么的信息,但DarkDust的答案包含了实际的解决方案+1美元。
*anError = [[NSError alloc] initWithDomain:@"my domain" code:errorCode userInfo:userDict];