アプリで自サイトのcookie情報を取りたい時など、起動時にopenURLを使いcustom url schemeで戻すといったことをすると思います。
iOS7ではApplicationDelegateのapplication:didFinishLaunchingWithOptions:等からopenURLを呼んでしまうと、上手く起動せず固まってしまいます。
その対処方法として、一旦GCDを使ってUIスレッドで実行するように指定し、起動処理が終わった後で実行されるようにすると固まることなくsafariへ遷移できます。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
dispatch_async(dispatch_get_main_queue(), ^{
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"https://example.com"]];
});
return YES;
}
なんとなく根本的な理由がモヤモヤしておりますが、とりあえずこれでサクッと動くようになります。