0

我正在使用线程调用我的函数“initialGetMethod”

[NSThread detachNewThreadSelector:@selector(initialGetMethod) toTarget:self withObject:nil];

我的get方法是

-(void) initialGetMethod
{
    self.loginPassword = [[ UIAlertView alloc] initWithTitle:@"Please Login to MFP" message:@"Enter Valid UserID and Password" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:@"Cancel", nil];
    [self.loginPassword setAlertViewStyle:UIAlertViewStyleLoginAndPasswordInput];
    [self.loginPassword setTag:2];
    [self.loginPassword show];
}

但它给出了异常“试图从主线程或网络线程以外的线程获取网络锁。这可能是从辅助线程调用 UIKit 的结果。”

它在“[self.loginPassword setAlertViewStyle:UIAlertViewStyleLoginAndPasswordInput];”处给出异常

如果我将该函数称为“[self initialGetMethod];” 它没有给出例外,但需要一些时间..

我尝试在后台加载,但它不工作..(意味着我不希望它在后台)..

请提出一些解决方案..

4

2 回答 2

2

您在运行应用程序期间遇到的错误是

“试图从主线程或web线程以外的线程获取web lock。这可能是从辅助线程调用UIKit的结果。”

一旦您在除 MainThread 之外的任何其他线程中更新或访问 UI 元素,就会发生这种情况(仅使用主线程来访问或更新 UI,它只会帮助您)

在这里,您在后台线程中显示警报,这就是它发生的原因

请使用以下其中一项来弹出警报

  [self performSelector:@selector(initialGetMethod) withObject:nil];

  [self performSelector:@selector(initialGetMethod) withObject:nil afterDelay:0.1];
于 2013-04-17T06:52:04.407 回答
-1
 //call createthread:

    [self setupTimerThread:];



       //write following code in setupTimerThread
       timer = [NSTimer timerWithTimeInterval:02
                                        target:self
                                      selector:@selector(initialGetMethod:)
                                      userInfo:nil
                                       repeats:NO];
       NSRunLoop* runLoop = [NSRunLoop currentRunLoop];
       [runLoop addTimer:timer forMode:NSRunLoopCommonModes];
       [runLoop run];
于 2013-04-17T06:57:27.517 回答