Nano Hash - криптовалюты, майнинг, программирование

Вызов UIPopoverViewController в основном потоке из дополнительного потока

Я выполняю свои функции во вторичном потоке, и как только я получаю результат, я вызываю функцию, которая выводит мой ViewController в основной поток. Но я получаю следующую ошибку:

void WebThreadLockFromAnyThread (), 0x5c6dec0: получение веб-блокировки из потока, отличного от основного потока или веб-потока. UIKit не следует вызывать из вторичного потока.

Я использую приведенный ниже код:

-(IBAction)done{    
  if([self validateRegistrationDetails]){
    [NSThread detachNewThreadSelector:@selector(invokeWebService) toTarget:self withObject:nil];
  }
}

-(void) invokeWebService{
  NSAutoreleasePool *pool=[[NSAutoreleasePool alloc]init];
  NSString *url = [NSString stringWithFormat:@"%@%@action=1&userName=%@&eMail=%@&firstName=%@&lastName=%@&mobileNo=%@",kBaseURL,kRegisterFunction,userName.text,eMail.text,firstName.text,lastName.text,mobileNo.text]; 
  [ADCUtilities performSelectorOnMainThread:@selector(updateText:) withObject:@"Registering... "waitUntilDone:NO];
  [ADCUtilities performSelectorOnMainThread:@selector(showIndicator:) withObject:self.view waitUntilDone:NO];
  NSDictionary *tempDict = [webService makeAPICall:url];
  [NSThread sleepForTimeInterval:3];
  if(tempDict!=nil){
    NSString *tempLoginSuccess = [tempDict valueForKey:kLoginStatus] ;
    if([tempLoginSuccess isEqual:@"LoginSuccess"]){
      [ADCUtilities displayAlertView:NSLocalizedString(@"REG_SUCCESS",@"")];
      [self performSelectorOnMainThread:@selector(popViewController) withObject:nil waitUntilDone:NO];
    } else {
      [ADCUtilities performSelectorOnMainThread:@selector( dismissIndicator) withObject:nil waitUntilDone:NO];
      [ADCUtilities displayAlertView:NSLocalizedString(@"REG_FAILED",@"")];
    }
   } else {
      [ADCUtilities performSelectorOnMainThread:@selector( dismissIndicator) withObject:nil waitUntilDone:NO];
      [ADCUtilities displayAlertView:NSLocalizedString(@"REG_FAILED",@"")];     
   }
   [pool release];  
}

-(void)popViewController{       
  [self.navigationController popViewControllerAnimated:YES];    
}

Ответы:


1

Я думаю, что ваша проблема на самом деле [ADCUtilities displayAlertView:NSLocalizedString(@"REG_SUCCESS",@"")], который, как я полагаю, отображает какое-то UIAlertView. Вы никогда не должны обращаться ни к каким классам UIKit, кроме как из основного потока.

30.04.2010
  • Привет, Эман, вот в чем проблема. Спасибо за решение. Извините, я не смог ответить в ближайшее время. 11.06.2010
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..