問題タブ [nsapplication-delegate]
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.
objective-c - NIB で使用する厳密なシングルトン アプリケーション デリゲート オブジェクトを強制しないのはなぜですか?
私はぐるぐる回って自分自身を走り回りましたNSMainNibFile
.. 2 つのアプリ デリゲートが動き回っているということは、別々の があることを意味しますmanagedObjectContexts
。
ここに考えがあります-アプリケーションデリゲートクラスをシングルトンにできますか? そして、より多くの XIB で安全にインスタンス化しますか? それは何を壊しますか?
[[UIApplication sharedApplication] delegate]
また、 「シングルトン」であるスタックオーバーフローに関するいくつかの言及がありますが、UIApplicationDelegate
プロトコルがそれを保証しているようには見えず、スーパークラスUIResponder
もシングルトンではありません。それで、iOSでもこの点で自分自身を撃つことができますか?
UIApplicationMain
[編集] iOSの delegateClassName を nil アウトして、メイン NIB にデリゲート オブジェクトをロードさせることができるように見えます。そのため、メイン NIB を使用している場合、OSX で見られる App Delegate オブジェクト パターンを作成できます。
[edit2] 新しい非ドキュメント アプリケーションの MainMenu.xib がどのように見えるかのスクリーンショット。プロジェクトはこのオブジェクトで作成され、アプリ デリゲート クラスはウィンドウ プロパティで作成されます。問題は、他のNIBで便利なオブジェクトを取得することであり、そのオブジェクトは[NSApp delegate]
cocoa - エージェントとして実行されているアプリからのログアウトを防ぐ方法
サンプル メニュー バー アプリは、LSUIElement が TRUE であるため、エージェントです。特定の条件でログアウトを防止したい。
- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender で試しました。しかし、ユーザーがログアウトしたときにこのメッセージを受け取ることはありません。
しかし、なしでは、ログアウトも防ぐことができます。
ログアウトを防ぐための代替ソリューションが必要です。
c++ - glfw アプリケーションで NSApplicationDelegate プロトコルを実装する方法
現在、MacOS X で glfw を使用してアプリケーションをプログラミングしています。私の唯一の問題は、アプリケーションが AppDelegate を使用せず、コマンド ライン ユーティリティのように main.cpp ファイルですべての初期化を行うことです。具体的に実装したい機能
- (BOOL)application:(NSApplication *)sender openFile:(NSString *)filename;
すでに plist ファイルにファイル拡張子を登録していて、それらを開こうとすると、「ドキュメント "Doc.xxx" を開けませんでした。MyApp は "xxx" 形式のファイルを開くことができません。
自分自身をデリゲートとして設定するシングルトンを作成しようとしましたが、関数を呼び出しません。クラスを作成して NSApplicationDelegate 関数を実装する可能性について誰かコメントできますか?
objective-c - NSApplication デリゲート呼び出しの順序
NSApplication デリゲート コールバックに奇妙な点があることに気付きました。デバッガーをアタッチしてアプリを起動すると、期待どおりのことがわかります。applicationDidFinishLaunching:
最初に呼び出され、次に呼び出されますapplicationDidBecomeActive:
デバッガーなしでアプリを実行すると、逆の順序で呼び出しが行われます:applicationDidBecomeActive:
前に呼び出されますapplicationDidFinishLaunching:
これには理由がありますか?デバッガーと非デバッガーに基づくさまざまなシナリオを考慮すると、非常に混乱します。
[注: これは Mavericks でテストしています]
objective-c - MAC 上のドキュメントベースのアプリケーションで新しいドキュメントを作成するための引数をキャッチする
Mac 用のドキュメントベースのアプリケーションに取り組んでいます。このアプリケーションには、そのような種類のドキュメントを読み書きするための独自のデータ モデルとメソッドがあります。このアプリケーションを定義済みのドキュメントで起動したい場合は、次の方法で実行できます。コマンド ラインを開いて、次のように入力します。
これは、引数 " file
" が MyApp ドキュメントのタイプである場合にのみ機能します。ここで、別の種類のドキュメント (テキスト ファイルなど) で MyApp を実行したいと思います。例えば:
テキスト ファイルが読み取られ、delivered/committed
MyApp から完全な新しいドキュメントに自動的に挿入されます。今、私は.rtf内のtext.rtfint main(int argc, char *argv[])
をキャッチしようとしています。しかし、次の警告が表示されます。
The document text.rtf could not be opened. MyApp cannot open files of this type
誰かが引数をキャッチして、完全な新しい MyApp ベースのドキュメントの一部としてインポートする方法を知っていますか? どうすればそれを NSApplication に送信できますか?
どんな助けでもうれしいです。
macos - 非表示の Mac OSX アプリが終了するときに通知を受け取る方法は? -- applicationWillTerminate() は呼び出されません
アプリの終了時に applicationWillTerminate:(NSNotification *) ハンドラーが呼び出されない Mac アプリがあります。プログラムがシャットダウンされた場合に呼び出さなければならない C++ メモリ クリーンアップ コードがいくつかあるので、これを行う何らかの方法が必要です。
呼び出されない理由は、次のキーを Info.plist に追加したことに関連しているようです。
このトピックに関する他の質問と回答を読みました。たとえば、applicationWillTerminate: not being calledおよびapplicationWillTerminate not called (受け入れられた正解は機能しませんでした)。applicationDidEnterBackground() も起動されません。applicationDidFinishLaunching() は常に正常に起動します。applicationShouldTerminate() が呼び出されたことがある場合は NSTerminateNow を返しますが、どちらも呼び出されません。
興味深いことに、このアプリは Chrome ネイティブのメッセージング ホストであり、プログラムによって起動されます。また、パイプが閉じるとシャットダウンされる可能性があるため、何らかのイベントや通知、またはシャットダウン時にコードを確実に実行できるものが本当に必要です。ユーザーが Command-Tab を使用する場合、アプリは非表示のままにする必要があり、アプリケーション スイッチャーに表示する必要はありません。
更新:
アクティビティ モニターからアプリを終了すると、コンソール アプリに次のログが記録されることに最初から気付きました。
これは、この SO の質問に対する Peter Hosey の回答に直接関連しています: applicationWillTerminate does not get invoked。そのため、すぐに NSSupportsSuddenTermination キーを Info.plist に追加して突然の終了を無効にし、(Peter の回答が示すように) applicationWillTerminate に起動する時間が与えられることを期待しました。残念ながら、そうではありませんでした。しかし、それはおそらく物事を明確にします。実際にそのコンソール ステートメントがアプリが終了していることを意味している場合、The End の前にコードを実行する機会を得るにはどうすればよいでしょうか?
objective-c - なぜ NSApplicationDelegate メソッド openFiles: はドック アイコンへの複数のドラッグで複数回呼び出されているのですか?
-(void)application openFiles:
アプリケーション アイコンにドラッグされたファイルに反応するメソッドを実装する Mac OS X アプリケーションがあります。
ターゲット情報設定のドキュメント タイプ セクションに許可されたファイル タイプのリストがあり、Finder は実際にドラッグを許可しますが、PDF がドラッグされたアイテムのリストにある場合、デリゲート メソッドが 2 回呼び出されます。 PDF、および PDF のみの 1 つ。
もちろん、これは私が状況を適切に処理することを不可能にします。
誰でも私を助けたり、何が起こっているのか説明できますか? ありがとう