问题标签 [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.

0 投票
1 回答
234 浏览

objective-c - NSAPP 自定义 URL 处理

我正在为 OSX 开发一个应用程序,并且必须在我的应用程序中处理自定义 URL 处理

当应用程序正在运行 时,我可以在里面获取事件

但是当应用程序没有运行时:它确实来到了 AppDidFinishedLaunching 并且我无法检测到它是正常调用还是通过自定义 URL 调用,

有什么方法可以在应用启动时进行检测?

提前致谢

0 投票
3 回答
455 浏览

objective-c - 为什么不强制在 NIB 中使用严格的单例应用程序委托对象?

我只是在圈子里跑来跑去,所有这些都归结为在不是NSMainNibFile. 令人惊讶的是,拥有两个应用程序代表意味着您有单独的managedObjectContexts的 .

这里有一个想法——我可以让我的应用程序委托类成为单例吗?并在更多的 XIB 中安全地实例化它?那会破坏什么?

此外,在 stackoverflow 上有一些提到[[UIApplication sharedApplication] delegate]是“单例”,但似乎UIApplicationDelegate协议并不能保证这一点,超类也不是UIResponder单例。那么我是否也可以在 iOS 上在这方面自取其辱呢?

[编辑] 看起来你可以在UIApplicationMainiOS 中取消 delegateClassName 并让主 NIB 加载委托对象,因此如果使用主 NIB,你可以创建在 OSX 上看到的 App Delegate 对象模式。

[edit2] MainMenu.xib 对于新的非文档应用程序的外观截图。项目使用此对象创建,应用程序委托类使用窗口属性创建。问题是在其他 NIB 中获得那个方便的对象,并且该对象与[NSApp delegate] 在此处输入图像描述

0 投票
1 回答
248 浏览

cocoa - 如何防止从作为代理运行的应用程序注销

示例菜单栏应用程序是一个代理,因为它的 LSUIElement 为 TRUE。我想防止在某些情况下注销。

我尝试使用 - (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender。但是当用户注销时我从未收到此消息。

但是如果没有,我也可以防止注销。

需要替代解决方案以防止注销。

0 投票
1 回答
1603 浏览

c++ - 如何在 glfw 应用程序中实现 NSApplicationDelegate 协议

我目前正在 MacOS X 中使用 glfw 编写应用程序。我唯一的问题是该应用程序不使用 AppDelegate,而是像命令行实用程序一样在 main.cpp 文件中进行所有初始化。我特别想实现这个功能

- (BOOL)application:(NSApplication *)sender openFile:(NSString *)filename;

我已经在 plist 文件中注册了文件扩展名,当我尝试打开它们时,我收到一条错误消息,提示“无法打开文档“Doc.xxx”。MyApp 无法打开“xxx”格式的文件。

我试图创建一个将自己设置为委托的单例,但它只是不调用该函数。任何人都可以评论创建类和实现 NSApplicationDelegate 函数的可能性吗?

0 投票
1 回答
275 浏览

objective-c - NSApplication 委托调用的顺序

我注意到我的 NSApplication 委托回调中有一些奇怪的地方。当我启动带有调试器的应用程序时,我看到了我所期望的:applicationDidFinishLaunching:首先调用,然后applicationDidBecomeActive:

当我在没有调试器的情况下运行应用程序时,我会以相反的顺序获得调用:applicationDidBecomeActive:之前调用applicationDidFinishLaunching:

是否有一个原因?考虑基于调试器与非调试器的不同场景非常令人困惑。

[注意:测试这是在小牛队]

0 投票
2 回答
231 浏览

objective-c - 在 MAC 上使用基于文档的应用程序创建新文档的参数

我正在为 Mac开发基于文档的应用程序。该应用程序有自己的数据模型和方法来编写和读取此类文档。如果我想使用预定义的文档启动此应用程序,我可以通过以下方式进行:打开命令行并输入

这仅在参数“ file”是 MyApp Document 类型时才有效。现在我想用另一种文档(如文本文件或其他文件)执行 MyApp。例如:

delivered/committed文本文件应该被读取并自动从 MyApp 插入到一个完整的新文档中。现在我尝试. int main(int argc, char *argv[])但我收到以下警告:

The document text.rtf could not be opened. MyApp cannot open files of this type

有人知道如何捕捉论点并将其作为全新的基于 MyApp 的文档的一部分导入吗?如何将其发送到 NSApplication?

会很高兴得到任何帮助。

0 投票
0 回答
108 浏览

c++ - 调用 LSLaunchFSRefSpec 后如何初始化 NSDocument?

我正在开发基于文档的应用程序。如果我从 Finder 执行此应用程序,它会按预期运行:首先NSApplicationDelegate applicationDidFinishLaunching执行该方法。然后NSPersistentDocument初始化完成。之后NSDocument makeWindowControllers执行定义的方法,从WindowNibName's 创建窗口控制器。

如果使用 Finder,一切正常,应用程序按预期启动。但是,如果我将使用 Launch Service Reference 从另一个应用程序执行基于文档的应用程序LSLaunchFSRefSpec,则该应用程序仅显示在 Dock 中。没有窗口出现。NoNSPersistentDocument将被初始化并且不会makeWindowControllers执行任何方法。只有applicationDidFinishLaunching方法被调用。目前,如果我通过单击鼠标从 Dock 激活应用程序,则可以完成窗口控制器的初始化和创建。我还测试了不同的启动标志LSLaunchFSRefSpec,但没有任何成功。

是否可以激活应用程序并自动创建它们的窗口?或者也许我可以模拟鼠标点击停靠图标?

0 投票
0 回答
644 浏览

macos - 如何在不可见的 Mac OSX 应用程序关闭时收到通知?-- 未调用 applicationWillTerminate()

我有一个 Mac 应用程序,当应用程序关闭时,它的 applicationWillTerminate:(NSNotification *) 处理程序不会被调用。如果程序关闭,必须调用一些 c++ 内存清理代码,所以我需要一些方法来执行此操作。

它没有被调用的原因似乎与我在 Info.plist 中添加以下键有关:

我已阅读有关此主题的其他问题和答案,例如applicationWillTerminate: not being calledapplicationWillTerminate not called(接受的正确答案无效)。applicationDidEnterBackground() 也永远不会被触发。applicationDidFinishLaunching() 总是可以正常触发。如果 applicationShouldTerminate() 曾经被调用,我会返回 NSTerminateNow,但它也没有被调用。

对于好奇的人,该应用程序是 Chrome 原生消息传递主机,并以编程方式启动。如果管道关闭,它可以在我身上关闭,所以我真的需要某种事件或通知或能够可靠地让我在关闭时执行一些代码的东西。如果用户使用 Command-Tab,我的应用程序需要保持不可见并且不需要出现在应用程序切换器中。

更新

我从一开始就注意到,当我从活动监视器终止我的应用程序时,控制台应用程序中记录了以下内容:

这与 Peter Hosey 对这个 SO 问题的回答直接相关:applicationWillTerminate 不会被调用。所以我立即将 NSSupportsSuddenTermination 键添加到我的 Info.plist 以禁用突然终止,希望(正如彼得的回答所暗示的那样) applicationWillTerminate 将有时间触发。唉,它没有。但它也许确实澄清了一些事情。如果该控制台语句确实意味着我的应用程序正在被终止,那么我怎样才能有机会在 The End 之前执行一些代码?

0 投票
1 回答
676 浏览

objective-c - 为什么 NSApplicationDelegate 方法 openFiles: 在多次拖动到停靠图标时被多次调用?

我有一个 Mac OS X 应用程序,它实现了-(void)application openFiles:对应用程序图标上拖动的文件做出反应的方法。

我的目标信息设置的文档类型部分中有一个允许的文件类型列表,并且 Finder 确实允许拖动,但是当 PDF 在拖动的项目列表中时,我的委托方法被调用两次:一次用于所有没有PDF,一个仅用于 PDF。

这当然使我无法妥善处理这种情况。

任何人都可以帮助我或解释发生了什么吗?谢谢

0 投票
3 回答
3690 浏览

swift - NSApplicationDelegate 的 applicationDidFinishLaunching 未被调用

我一直在尝试使用 Swift 3,但我无法开始。以下代码正在编译,但它不记录任何内容。看起来applicationDidFinishLaunching没有被调用。我在这里错过了一些关键的部分吗?

来源/main.swift

ps 关于applicationDidFinishLaunching被调用但不打印任何内容有一个类似的问题。我相信情况并非如此,因为拥有window.orderFrontRegardless()而不是记录对我也没有影响。