web-dev-qa-db-ja.com

Xcodeでプログラムでコンソールをクリアする方法は?

コードには、デバッグに使用するNSLogステートメントがたくさんあります。プロジェクトを実行するたびに、新しいコンソール画面から開始したいと思います。これを行うことができるコードに埋め込むことができるコマンドはありますか?

31
NSExplorer

XCodeプリファレンスの「AutoClearDebugConsole」設定を使用できるかもしれません。これがあなたの質問に答えるかどうかわかりませんか?

8
stackr

コンソール(デバッグモード)の場合は、

Command + k 

コンソールをクリアします。

68
Ashwani

私はあなたができる唯一のことは

for(int i= 0; i < 100; i++) 
NSLog(@" ");

古き良きMS-DOSのように:)

20
Tertium

Xcodeウィンドウでコンソールについて話している場合は、[実行]メニューに[コンソールのクリア]オプションがあります。また、[デバッグ]設定タブには[デバッグコンソールの自動クリア]チェックボックスがあります。 Xcode3.2.xを参照しています

10
Mark

デバッガーコンソール/実行ログは、基本的に、アプリからリダイレクトされた「これをコンソールに記録する」コマンドです。 「クリア」とは、メッセージが通常どこか(ファイルなど)でシャントされるだけなので、一般的な意味では何の意味もありません。アプリケーションは、デバッグ環境について知っている必要があり、ログに記録されているものをすべてクリアするようにその環境に指示できる必要があります。

要するに:私はそれが不可能ではないと思いますが、それは途方もなく不便です。

3
Joshua Nozzi

スタッカーが述べたように、XCodeプリファレンスの「AutoClearDebugConsole」設定がこれを行います。コードでそれを行うには:

bool ClearXCodeDebuggerConsole()
{
    NSString *const scriptText = @"\
tell application \"System Events\"\n\
set currentapp to the name of the current application\n\
end tell\n\
tell application \"Xcode\" to activate\n\
tell application \"System Events\"\n\
keystroke \"r\" using {command down, control down, option down}\n\
end tell\n\
tell application currentapp to activate\n\
return true";

    NSAppleScript *script = [[[NSAppleScript alloc] initWithSource:scriptText] autorelease];
    [scriptText release];
    NSDictionary *dictError = nil;
    NSAppleEventDescriptor *result = [script executeAndReturnError:&dictError];

    if (!result) return false;
    if ([result booleanValue] != YES) return false;
    return true;
}
1
Aidan