-1

私はこのコードを持っています:

NSWorkspace *sharedWorkspace = [NSWorkspace sharedWorkspace];
NSString *appPath = [sharedWorkspace fullPathForApplication:appName];
NSString *identifier = [[NSBundle bundleWithPath:appPath] bundleIdentifier];
NSArray *selectedApps =
    [NSRunningApplication runningApplicationsWithBundleIdentifier:identifier];
// quit all
[selectedApps makeObjectsPerformSelector:@selector(terminate)];

これは、appName (NSString) という名前から実行されているすべてのアプリケーションを閉じることを想定しています。

アプリをデバッグし、appName を指す NSTextField にアプリケーション名を入力すると、終了させたい他のアプリケーションではなく、自分のアプリケーションが閉じられます。別の投稿でこの質問に回答しましたが、誰も回答していないので、新しい投稿を開始すれば回答が得られるのではないかと思いました...ありがとう。(これは重複ではありません。私が bakc に返信したときに人々が応答しないというだけです...)

ありがとう。、

ケビン

4

1 に答える 1

1

プロジェクトのInfo.plistでアプリのバンドル識別子を確認し、一意であることを確認してください。

また、引数として実際に渡すselectedAppsの値を決定する必要があります。これを行うには、ログに記録します。

NSLog(@"selectedApps: %@", selectedApps); 

または(これはJon Hessのコメントで提案されています)、ブレークポイントを作成します。これはいくつかの方法で実行できます。

ブレークポイントを設定したら、[実行]->[デバッグ]を選択します。これにより、デバッガー(gdb)でプログラムが実行されます。失敗のポイントに到達するためにあなたが通常することは何でもしなさい。ただし、今回は何も終了せず、指定した行で停止します。この時点で、変数を調べることができます。'po'(オブジェクトの印刷)コマンドを発行することにより、objective-cインスタンスを印刷できます。したがって、次のような結果になる可能性があります。

(gdb)po appPath
    // gdb will print this
(gdb)po identifier
    // gdb will print this
(gdb)po selectedApps
    // gdb will print this
于 2009-09-29T00:17:42.187 に答える