这段代码在iOS 8上工作。但是,现在当我在发布模式下构建时,我得到了一个
没有Visible @interface的'NSError'声明了选择器'code'。
代码位于NSError
。我可以点击它然后看到它,但是,我不明白为什么它只是停止使用xcode 6.1和iOS 8.1
我尝试在5.1.1上构建,并且在发布模式下构建得很好。
+(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;
}
}
}
答案 0 :(得分:3)
您正在传递 NSError
个实例,因此您不需要__autoreleasing
或指向指针的指针:
+(BOOL) isResponseError:(NSURLResponse *)response responseString:(NSString *)responseString error:(NSError *)error {
NSInteger statusCode = 0;
if (error) {
statusCode = [error code];
}
如果8.1之前没有错误,那不是因为编译器错误检查得到了改进。