【发布时间】:2014-03-09 20:02:55
【问题描述】:
我的班级有成员__strong NSError *authError;
我想以一种方法捕获并创建它并签入另一种方法。
所以如果方法一出现错误:
if([returnString rangeOfString:@"dd"].location != NSNotFound) {
NSMutableDictionary *errorDetail = [NSMutableDictionary dictionary];
[errorDetail setValue:@"Wrong user crediantials" forKey:NSLocalizedDescriptionKey];
authError = [NSError errorWithDomain:@"mydomain" code:101 userInfo:errorDetail];
return nil;
}
我将它直接分配给 authError 类成员。但是在执行最后一个 breket authError 之后变为 nil。 在方法2中:
if(authError != nil){
return NO;
}
条件返回YES
一些附加信息:方法 2 是 shouldPerformSegueWithIdentifier
有人可以给我一个提示吗?
【问题讨论】:
-
如果这是一个实例变量,你说
self.authError会更可靠更清楚。 -
好的,所以 - 放置日志记录或断点,然后查看设置
authError实例变量的行是否实际运行过。例如,如果不满足if条件,则花括号中的条件代码不会运行... -
另外,不需要显式写 __strong ,它已经有强“标记”了。
-
另一件事要尝试;在这两种方法中使用日志来查看它们被调用的顺序。如果它们在方法 2 和方法 1 中被调用,显然方法 1 还没有机会设置您的实例变量,即使设置它的代码正在运行。
-
@matt 是对的。 shouldPerformSegueWithIdentifier 在方法 1 之前被调用
标签: ios error-handling null nserror