で大量のデータをログに記録していNSLog()
ます。iPhone が開発マシンに接続されておらず、デバッガーで実行されている場合に、ログ データをキャプチャする方法はありますか?
たとえば、それをファイルにリダイレクトし、後で Xcode を介してログ ファイルを読み取ることはできますか? WiFi が貧弱なときにアプリをテストするためにこれを行う必要があり、デスクから遠く離れなければなりません。
で大量のデータをログに記録していNSLog()
ます。iPhone が開発マシンに接続されておらず、デバッガーで実行されている場合に、ログ データをキャプチャする方法はありますか?
たとえば、それをファイルにリダイレクトし、後で Xcode を介してログ ファイルを読み取ることはできますか? WiFi が貧弱なときにアプリをテストするためにこれを行う必要があり、デスクから遠く離れなければなりません。
以下の方法では、アプリケーションのDocumentsフォルダーにファイル名「console.log」を作成して、後で読むことができるようにします。
プログラムの開始時にこのメソッドを呼び出します。
- (void) redirectConsoleLogToDocumentFolder
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *logPath = [documentsDirectory stringByAppendingPathComponent:@"console.log"];
freopen([logPath cStringUsingEncoding:NSASCIIStringEncoding],"a+",stderr);
}
ログが消去されることはありませんので、注意して使用してください。
フィールドでアプリをテストしたら、電話をMacに再接続し、Xcodeでオーガナイザーを開きます。[概要]パネルには、携帯電話上のすべてのアプリのリストがあります。デバッグしているものを展開すると、「アプリケーションデータ」という名前のパッケージが表示されます。
名前の右側にある矢印をクリックして保存します。バンドル識別子の名前の後に日付が続くフォルダで終わります。
このフォルダ内には、console.logが含まれている必要があるドキュメントフォルダがあります。
NSLog() 呼び出しはシステム コンソール ログに書き込まれると確信しているため、オフラインの後に iPhone をコンピュータに接続すると、XCode Organizer でコンソール ログを確認できるはずです。唯一の注意点は、コンソール ログのサイズが制限されているため、多くのログを記録すると古いエントリが削除される可能性があることです。
App Store にはコンソールアプリもありますが、iOS 6 以前でしか機能しません。
iOS 7 が登場すると、事実上動作しなくなりました。(システム全体ではなく、独自のコンソール ログのみを読み取ることができるようになりました。)
マーク・ノバコウスキーは正しい。コンソール出力は電話に記録され、Mac を電話に接続すると、コンソール出力がオーガナイザー ウィンドウで利用可能になります。
デバイス パネルで電話を選択し、コンソール タブを選択するだけです。最近のコンソール出力はすぐそこにあります。とてもかっこいい。
私はちょうどこれを理解しました。これは、コンピューターから離れる必要がある場所を説明するような状況で非常に役立ちます.
ところで、弱い WiFi 信号をテストする必要性に対する解決策があります。USBケーブルがホイルラッパーから突き出た状態で、携帯電話をアルミホイルで包むだけです。テザリングして実行している場合は、デバッガーでコードをシングルステップ実行できます。ユーザー インターフェイスを操作することはできませんが、3D、WiFi、GPS などの無線信号を劣化/除去できます。信号強度を低下させたいが完全にキャンセルしたくない場合は、電話機を部分的にホイルで覆ったり、カバーに小さな穴を開けたりするなどの実験が必要になる場合があります。
1 つの注意: 電話をホイルで包んだまま、一度に数分以上放置しないでください。オーバーヒートする恐れがあります。