这段代码在 iOS 8 上运行。但是,现在当我在 Release模式下构建时,我得到了一个
No Visible @interface for 'NSError' declares the selector 'code'.
代码位于
NSError
.我可以点击进去看看,但是,我不明白为什么它只是停止使用 xcode 6.1 和 iOS 8.1我尝试在 5.1.1 上构建,它在 Release模式下构建良好。
+(BOOL) isResponseError:(NSURLResponse *)response responseString:(NSString *)responseString error:(NSError *__autoreleasing *)error {
NSInteger statusCode = 0;
if (*error) {
statusCode = [*error code];
}
if ([response isKindOfClass:[NSHTTPURLResponse class]]) {
statusCode = [(NSHTTPURLResponse *)response statusCode];
}
if (statusCode >= 400 || statusCode <= kCFURLErrorUnknown) {
NSMutableDictionary *dic = [NSMutableDictionary dictionary];
[dic setValue:[NSHTTPURLResponse localizedStringForStatusCode:statusCode] forKey:NSLocalizedDescriptionKey];
return true;
} else {
id ret = [Serialization deserializeJSON:responseString];
if ([ret superclass] == [NSMutableDictionary class] || [ret class] == [NSDictionary class]) {
if ([ret objectForKey:@"error"]) {
NSMutableDictionary *dic = [NSMutableDictionary dictionary];
[dic setValue:[ret objectForKey:@"error"] forKey:NSLocalizedDescriptionKey];
return true;
} else {
return false;
}
} else {
return false;
}
}
}
最佳答案
您正在通过 在 一个 NSError
实例所以你不需要__autoreleasing
或指向指针的指针:
+(BOOL) isResponseError:(NSURLResponse *)response responseString:(NSString *)responseString error:(NSError *)error {
NSInteger statusCode = 0;
if (error) {
statusCode = [error code];
}
如果在 8.1 之前没有错误并且不是因为编译器错误检查得到了改进。
关于ios - NSError 没有可见界面 iOS 8.1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26870608/