NSError没有可见的界面iOS 8.1

时间:2014-11-11 17:18:53

标签: ios objective-c nserror

这段代码在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;
        }
    }
}

1 个答案:

答案 0 :(得分:3)

您正在传递 NSError个实例,因此您不需要__autoreleasing或指向指针的指针:

+(BOOL) isResponseError:(NSURLResponse *)response responseString:(NSString *)responseString error:(NSError *)error {
    NSInteger statusCode = 0;

    if (error) {
        statusCode = [error code];
    }

如果8.1之前没有错误,那不是因为编译器错误检查得到了改进。