bool _WebTryThreadLock(bool), 0x8053ce0: Tried to obtain the web lock from a thread other than the main thread or the web thread. This may be a result of calling to UI
I had a similar issue and used
performSelectorOnMainThread:withObject:waitUntilDone:
to solve it. Hope that helps.
I too faced this issue while i was calling a method by
[self performSelector:@selector(myMethod) withObject:nil afterDelay:.01];
Now it has solved by performing it on main thread
[self performSelectorOnMainThread:@selector(myMethod) withObject:nil waitUntilDone:NO];
if you are going to do any UI operation it has to be done on main thread..
simply paste the coding inside the following syntax
dispatch_sync(dispatch_get_main_queue(), ^{
//Your code goes here
});
or you can call your method using the following syntax
[self performSelectorOnMainThread:@selector(yourmethod:)withObject:obj waitUntilDone:YES]
Hope this helps
Durai answer in Swift 3:
DispatchQueue.main.async {
//Your code goes here
}
//The easiest way is to call the function using main thread for that.
dispatch_async(dispatch_get_main_queue(), ^{
[self doSomething];
});
This may be a result of calling to UIKit from a secondary thread. Crashing now...
...and as far as I can see that's just what you're doing. You're calling [alertProgress dismissWithClickedButtonIndex:0 animated:YES];
, a UIKit method, from a thread other than your main thread(s), which is not allowed.
For a very straight forward way to call back to the main thread if you can't use GCD, take a look at DDFoundation.
Your code would in that case only change to do;
[[alertProgress dd_invokeOnMainThread] dismissWithClickedButtonIndex:0
animated:YES];