2014-11-11 2 views
0

Этот фрагмент кода работает над прошивкой 8. Тем не менее, теперь, когда я строю в режиме выпуска я получаюNSError нет видимых IOS интерфейс 8.1

Нет видимых @interface для «NSError» объявляет селектор «код ».

Код находится по адресу 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

Вы уверены, что проблема заключается не только в прямом объявлении 'NSError', а не в коде, опубликованном? Я снял первые шесть строк и поместил их в Xcode 6 без каких-либо предупреждений или ошибок. – Tommy

+0

Да. Я попытался создать выпуск. Нет предупреждений. Нет ошибок. – Tommy

ответ

1

Вы передаете вNSError экземпляра, так что вам не нужно __autoreleasing или указатель на указатель:

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

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

Если ошибки не было до 8.1 и не то, что это потому, что компилятор проверка ошибок была улучшена.

Смежные вопросы