2013年11月29日金曜日

iOSシミュレーターでSafariが起動しなくなったりした時の解決法・・・じゃなくて原因

Xcode上でプログラムを作っていて、iOSシミュレーターで動作させようとするのに、
Safariが起動しなくなった。
具体的には、このようなコードを実行してもSafariが起動しない。

NSURL *url=[NSURL URLWithString:@"http://www.blogger.com"];
// httpがあるので自動的にブラウザが立ち上がる
if ([[UIApplication sharedApplication]canOpenURL:url]) {
    [[UIApplication sharedApplication] openURL:url];
}

最初はプログラムやURLを疑ったのだけどどうにもならなくて、結局iOSシミュレーターで「コンテンツと設定のリセット」をすることで治った。

でもその原因は何だったのか。

調べた結果これだった。

(1)iOSシミュレーター(正確にはXcode)は以下の場所にプログラムの実行コードを作成する
/Users/ユーザー名/Library/Application Support/iPhone Simulator/バージョン/Applications/
バージョンはiOS7.0.3用なら7.0.3になる。
この下にアルファベットと数字とハイフンからなるディレクトリがいくつか作られている。
なお、このディレクトリは、Buildだけでは作成されず、Run後、実際にシミュレーター上にプログラムが起動する直前に初めて作成される。

(2)このディレクトリの内、少なくとも1つはユーザーの作ったアプリケーションであるが、他に6つほど、見に覚えのないディレクトリが存在する。その内容は、以下のとおり。
    Web.app
    StoreKitUIService.app
    WebViewService.app
    MobileSafari.app
    WebContentAnalysisUI.app
    DDActionsService.app

(3)見知らぬアプリのフォルダなので、「消してしまえ」とすると、以後動作がおかしくなる。

という次第である。今回の場合、MobileSafari.appを消してしまったので上記現象が発生したと。

アプリ内で作る中間ファイルなどを確認するために、アプリのフォルダの中を見ることはよくあるのだけど、他のが必要なんて今まで気づかなかった。

・・・と言うか、このフォルダ構成、iOS7.0以降でこうなった気がする。
6.xや5.xの下にはこういうのは出来ていない。

ということで、「フォルダはむやみに消しちゃダメ」というお話。

0 件のコメント:

コメントを投稿