問題タブ [nsapplication]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
2462 参照

objective-c - Cocoa アプリケーションの終了ステータスを設定する良い方法はありますか?

サーバーとやり取りして GUI を表示する Cocoa アプリがあります。致命的なエラーが発生した場合は、アラートを表示して終了します。他の UNIX ベースのツールとの対話を容易にするために、エラーが発生したことを反映するために終了ステータスをゼロ以外の値に設定したいと考えています。

残念ながら、これを行う良い方法を見つけることができませんでした.NSApplicationには終了ステータスを設定する方法がないようです. 現時点では、NSApplication をサブクラス化し、ivar exitStatus(必要に応じてアプリのデリゲートに設定) を追加し、オーバーライド-terminate:してexit(exitStatus). terminate:これは問題なく動作しますが、標準が舞台裏で行っている重要な何かを見落としている可能性があることは言うまでもなく、少し汚れているように思えます。ステータスを設定する機会がない[super terminate:sender]ため、サブクラス化されたメソッドを呼び出すことはできません。exit()

明らかな何かが欠けていますか?

0 投票する
4 に答える
6362 参照

cocoa - NSApplication orderFrontStandardAboutPanel: about パネルの標準を少し下げる

orderFrontStandardAboutPanel メッセージを受信したときに NSApplication によって表示される標準の Cocoa についてのダイアログに追加の任意のデータを追加するオプションはありますか?

0 投票する
1 に答える
3316 参照

objective-c - applicationWillFinishLaunchingデリゲートでココアアプリを終了する方法

アプリケーションの使用を開始する前に、ユーザーにカスタムライセンス契約ダイアログを表示する必要があるため、mainMenu.xibに新しいウィンドウを追加し、を使用してそのウィンドウをモーダルに表示します。

applicationWillFinishLaunchingの場合:起動時に表示を使用してメインウィンドウを非表示にして、チェックを外して委任します。ライセンスウィンドウには、[同意する]と[同意しない]の2つのボタンがあります。ユーザーが[同意する]ボタンをクリックした場合はメインウィンドウを表示し、[同意しない]を選択した場合はアプリを終了する必要があります。

[NSApp終了]を呼び出そうとしました。applicationWillFinishLaunching:しかし、何もしませんでした。

applicationWillFinishLaunchingでアプリを終了する方法を教えてください:

ありがとう

0 投票する
1 に答える
5081 参照

cocoa - カスタム NSApplication の終了を実装する方法: Cocoa での動作?

Cocoa アプリケーションにカスタムの終了動作を実装しようとしています。通常、アプリケーションが正常に終了すると、実行時のデータベースの最終クリーンアップが実行されてから終了します。これは、が呼び出されるNSApplicationたびに AppDelegate ( のデリゲート) 内で発生します。[NSApp terminate:aSender]

実行時にエラーが発生した場合 (データベース ファイルが削除された場合など)、ユーザーにエラーを提示し、回復 (ファイルを元に戻して再試行) または終了するオプションを提供します。[終了] が選択されている場合は、データベースのクリーンアップをすべてスキップしてアプリを終了します。これは不可能になったためです。本質的に、私はこのようなものが欲しいです:

もちろん、問題は gracefulTermination の値を取得することです

infoDict などの呼び出されNSAppたときにカスタム変数を渡し、内部で受け取る方法はありますか?terminate:applicationShouldTerminate:

そうでない場合、カスタムの終了動作を実現するためのより良い方法はありますか?


私の知る限り、terminate:が他のオブジェクトから呼び出されると、次のようになります。

  1. [NSApp terminate:self];foo (別名self )によって呼び出されます。
  2. NSApp はデリゲートを送信します: [aDelegate applicationShouldTerminate:self];( selfはfooではなく NSApp です)。
  3. aDelegate はメッセージを受け取り、applicationShouldTerminate:実装されている場合は実行します。

fooはどこかに消えたように見え、aDelegateがメッセージを受け取るまでに、それは完全になくなり、送信者としてのみNSApp表示されます。これにより、カスタム動作を含む aDelegate に foo 内の infoDict や単なる infoDict を渡すことができなくなりterminate:ます。


[NSApp terminate:...]のようなものを使用せずに終了できることは承知していexit()ます。私が読んだところによると、これはココアのコーシャではないため、眉をひそめています. さらに、他のクリーンアップ操作が内部applicationShouldTerminate:で発生するのを防ぐことにもなります。

0 投票する
2 に答える
4019 参照

objective-c - NSApplication endSheet: 効果なし

わかりました、これは本当に私を困惑させています:

ウィンドウにモーダルシートを作成します

そしてそれを削除しようとします

しかし、それは残ります。

IB接続などの明らかなことをすべてチェックし、windowとloginWindowが存在し、通常の状態であることを確認しました。

だから、質問は:私は何かが欠けていますか?

0 投票する
1 に答える
131 参照

objective-c - ファイルを NSStatusItem にドラッグする

application:openFile:NSAppのデリゲート メソッドを使用すると、アプリケーションでファイルをドックにドロップして開くことができると言われましたが、これはメニュー バーの NSStatusItems にも適用されますか? 実装を試みる前に知りたいです。

0 投票する
1 に答える
2416 参照

objective-c - NSApplicationが最前線のアプリケーションステータスを辞任:非表示v。非アクティブ化

タイマーの期限が切れた後に最前面のアプリケーションになり、ボタンを押してタイマーが開始されたときに最前面のステータスを辞任する必要があるアプリケーションがあります。

  • 「タイマーの開始」をクリックします->アプリはほとんどのアプリケーションの最前線で辞任します
  • タイマーの期限が切れます->アプリが最前面のアプリケーションになります

のアクティブなステータスで遊んでもsharedApplication私が望むことをしないので、私は意図的に少し言い換えました。

私はaを実行することで最前線のアプリになり、[[NSApplication sharedApplication] activateIgnoringOtherApps: YES]それは完全にうまく機能します。

逆にするのは無理そう!?

  • [[NSApplication sharedApplication] deactivate]直接呼び出すべきではありませんが、さらに重要なことに、「コマンドタブの順序」で次のアプリケーションを転送しません。アプリはメニューバーが表示された状態でそこに座っているだけですが、「アクティブ」ではなくなりました。

  • [[NSApplication sharedApplication] hide: self]アクティブなステータスを辞任し、「コマンドタブの順序」で次のアプリケーションを前面に表示しますが、すべてのアプリケーションウィンドウも非表示にします。

すべてのウィンドウを非表示にすることなく、コマンドタブの順序で次のアプリケーションを前面に表示する方法が必要です。

それを行う良い方法はありますか?

ソリューションは、10.5Leopardおよび10.6互換である必要があります。

私は1996年頃からの解決策を持っていますが、それはCarbon APIを含み、Cocoaまたは少なくともFoundationの方法でそれを行うことを本当に望んでいます。

どんな助けでも大歓迎です。

0 投票する
1 に答える
2216 参照

objective-c - NSAppは何を隠しますか:実際にはNSWindowインスタンスで何をしますか?

私はNSWindowサブクラスに取り組んでいて、MacOSXでWindowsがどのように機能するかについての私の仮定のいくつかに疑問を投げかける奇妙な振る舞いに遭遇しています。

が呼び出されると、NSWindowインスタンスは正確にどうなりますか?[[NSApplication sharedApplication] hide: self]

NOを返さないすべてのウィンドウは-(BOOL)canHide、画面から消えます。[NSApplication sharedApplication] unhide: self]その後、アプリケーションがアクティブになるか呼び出されると、すべてのウィンドウが再表示されます。

これは、現在のウィンドウの状態のスナップショットを取り、orderOut:すべてのNSWindowインスタンスを呼び出し、unhide:が呼び出されたときにすべてを逆方向に実行することで実現されると想定していました。

しかし、そうではないようです。orderOut:私のサブクラスのメソッドNSWindowは呼び出されません。実際、それも隠されていません。setCanHide:それはYESに設定されていますが..何が起こっているのですか?

任意の洞察をいただければ幸いです。

よろしくお願いします、

フランク

0 投票する
1 に答える
6784 参照

objective-c - Cocoa: 別のクラスから App Delegate メソッドを呼び出す

現在、カスタム ビュー内のドラッグ アンド ドロップ操作からファイルのパスを取得し、そのパスをアプリ デリゲートに渡そうとしています。現在、次のものを使用しています。

ただし、アプリのデリゲートが「uploadFiles」メソッドに応答しないというメッセージが表示され続けます。アプリデリゲート内で宣言されています。NSApplication に正しい方法でアクセスしていますか?

ありがとう。

0 投票する
2 に答える
1545 参照

macos - コンソールの代わりに Mac OS X アプリをビルドする

Mac OS X で動作するアプリケーション、ゲームのポートがあります。make でビルドし、NSApplication、NSWindow、および NSOpenGLView から必要なものにアクセスするためにいくつかの .mm ファイルを追加しただけです。

  1. 現在のコンソール形式ではなく、適切なアプリに「変換」するにはどうすればよいですか? もしそうなら、どうやってそれを何かにバンドルしますか?それとも、ある種のリンカ設定 (Windows の場合など) ですか? XCode を使用してビルドする必要がありますか?
  2. 現在、システムを「チェック」するだけです。つまり、OS X メッセージ ポンプを適切に利用するのではなく、イベントをポーリングします。固定フレームレートで自分のものを「ティック」しながら、それを適切に行う方法を示す基本的なサンプルまたはチュートリアルを教えてください。ドキュメントに関しては目が見えないので、「サンプルまたはチュートリアル」と言います。

ありがとう!