以下の例のいずれかを使用して解決できます。
diapatch_async の使用
dispatch_async(dispatch_get_main_queue(), ^{
[[UIApplication sharedApplication] openURL:urlString];
});
perfoSelector の使用
- (void)applicationDidBecomeActive:(UIApplication *)application
{
...
//hangs for 10 seconds
//[[UIApplication sharedApplication] openURL:[NSURL URLWithString: url]];
//Fix: use threads!
[self performSelector:@selector(redirectToURL:)
withObject:url afterDelay:0.0];
...
}
- (void)redirectToURL:(NSString *)url
{
[[UIApplication sharedApplication] openURL:[NSURL URLWithString: url]];
}
NSスレッドの使用
- (void)applicationDidBecomeActive:(UIApplication *)application
{
...
//hangs for 10 seconds
//[[UIApplication sharedApplication] openURL:[NSURL URLWithString: url]];
//Fix: use threads!
[NSThread detachNewThreadSelector:@selector(openBrowserInBackground:)
toTarget:self withObject:url];
...
}
- (void)openBrowserInBackground:(NSString *)url
{
[[UIApplication sharedApplication] openURL:[NSURL URLWithString: url]];
}