代码之家  ›  专栏  ›  技术社区  ›  RK-

从辅助线程在主线程上调用uipopOverview控制器

  •  0
  • RK-  · 技术社区  · 15 年前

    我在一个二级线程中执行我的功能,一旦得到结果,我就调用在主线程中弹出视图控制器的函数。但我得到以下错误:

    void WebThreadLockFromAnyThread(),0x5C6dec0:从主线程或Web线程以外的线程获取Web锁。不应从辅助线程调用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 回复  |  直到 11 年前
        1
  •  3
  •   shosti    15 年前

    我认为你的问题实际上是 [ADCUtilities displayAlertView:NSLocalizedString(@"REG_SUCCESS",@"")] ,我认为它显示了某种 UIAlertView . 除了主线程之外,您不应该访问任何uikit类。