我正在使用该线程来调用我的函数“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];
}
但它给出异常“试图从主线程或网络线程以外的线程获取Web锁。这可能是从辅助线程调用UIKit的结果。”
在“[self.loginPassword setAlertViewStyle:UIAlertViewStyleLoginAndPasswordInput]”中给出异常;“
如果我将该函数称为“[self initialGetMethod];”它没有给出例外,但需要一些时间..
我尝试在后台加载,但它不起作用..(意思是我不希望它在后台)..
请提出一些解决方案..
答案 0 :(得分:2)
在运行应用程序期间遇到的错误是
“试图从主线程或网络线程以外的线程获取Web锁定。这可能是从辅助线程调用UIKit的结果。”
一旦您更新或访问除MainThread之外的任何其他线程中的UI元素(仅使用主线程访问或更新UI,它只会帮助您)
这里显示了后台线程中的警报,这就是它发生的原因
请使用以下其中一项进行PopUp提示
[self performSelector:@selector(initialGetMethod) withObject:nil];
[self performSelector:@selector(initialGetMethod) withObject:nil afterDelay:0.1];
答案 1 :(得分:-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];