2014-10-12 5 views
2

У меня есть ошибка в iOS 8, которая замерзает мое приложение для iPhone. Во время загрузки данных из бэкэнд с помощью RestKit я не знаю, почему код в методе getObjectsAtPath не выполняется. Я предполагаю, что должен быть возвращен код из блока успеха или отказа этого метода. Похоже, что остальная часть пытается получить данные из бэкэнда, так как я вижу, что индикатор активности сетевой активности по-прежнему активен. Я не знаю, как я мог бы изучить проблему, потому что Xcode не возвращает никаких ошибок. Приложение все еще работает, но я не могу нажать кнопку «Назад», чтобы перейти к родительскому виду.Restkit замораживается

-(void)loadAlerts{ 
_credentials = [[EFCredentials alloc]init]; 

NSString *rememberToken = [_credentials authToken]; 

if ([EFReachabilityManager isReachable]) { 


    [[[RKObjectManager sharedManager]HTTPClient]setDefaultHeader:@"Authorize" value:rememberToken]; 

    RKResponseDescriptor *responseDescriptor = 
    [RKResponseDescriptor responseDescriptorWithMapping:[EFMappingProvider alertsMapping] 
               method:RKRequestMethodGET 
              pathPattern:[NSString stringWithFormat:@"/%@/alerts.json",_id] 
               keyPath:nil statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)]; 

    [[RKObjectManager sharedManager]addResponseDescriptor:responseDescriptor]; 

    [[RKObjectManager sharedManager] getObjectsAtPath:[NSString stringWithFormat:@"/wearers/%@/alerts.json",_wearer_id] parameters:nil 


               success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult){ 

                NSLog(@"%@",mappingResult.array); 

                [self.tableView reloadData]; 


               } 

               failure:^(RKObjectRequestOperation *operation, NSError *error) { 



                UIAlertView *alertView = 
                [[UIAlertView alloc] initWithTitle:@"Error" message:[error localizedDescription] delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; 

                [alertView show]; 
               } 
    ]; 
} 
else{ 

    _alertViewReachability = [[UIAlertView alloc]initWithTitle:@"Error" message:@"No network connection " delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Try again", nil]; 
    [_alertViewReachability show]; 
} 

}

enter image description here

libsystem_kernel.dylib`semaphore_wait_trap: 0x196954eb0: movn х16, # 35

0x196954eb4: SVC# 128

0x196954eb8: RET

+0

И кнопка работает, если вы не назовете RestKit? – Wain

+0

Да, кнопка работает без комплекта отдыха, только простая кнопка «назад». Я уже тестировал приложение на iOS 7, и тот же код работает без каких-либо проблем. – sonoDamiano

+2

И вызывается 'getObjectsAtPath', но ни один из обратных вызовов не вызван? Включите ведение журнала трассировки и используйте профилировщик, чтобы узнать, что делает приложение во время «блокировки». – Wain

ответ

0

Похоже, что pos силовой тупик. Метод refreshData: в EFAlertsHistoryTVC отвечает на уведомление. Возможно, что-то в этом методе синхронно ждет данных, которые будут недоступны до тех пор, пока метод не вернется.

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