0

私はセカンダリ スレッドで機能を実行しています。結果が得られたら、メイン スレッドで ViewController をポップする関数を呼び出します。しかし、次のエラーが表示されます。

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];    
}
4

1 に答える 1

3

あなたの問題は実際[ADCUtilities displayAlertView:NSLocalizedString(@"REG_SUCCESS",@"")]にはUIAlertView. メイン スレッド以外から UIKit クラスにアクセスしないでください。

于 2010-04-30T15:57:35.457 に答える