问题标签 [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 投票
1 回答
1453 浏览

cocoa - 当用户代理进程终止时如何运行代码?

我想要的是

我想要一个帮助应用程序用户代理(Info.plist 中的 LSUIElement 为 True)在终止时将自身添加到登录项中。

问题

在帮助应用程序进程终止之前,我无法运行任何代码。我的“添加到登录项”代码运行良好。

背景

  • 我有一个一直在运行的帮助应用程序用户代理进程
  • 首次启动时,它会将自身添加到登录项中
  • 如果应用程序被移动,则在下次登录时,找不到帮助应用程序进程,因此不会启动

我试过的

我想知道我是否应该继承 NSApplication 并覆盖 terminate: 或 stop: 并将我的代码放在那里,但这似乎有点矫枉过正。肯定有更好的方法吗?

我在 NSApp 委托中尝试了所有这些不同的东西:

为什么 NSApplication 委托方法不适用于用户代理进程?

以及如何获得在终止时检查登录项的过程?

我将非常感谢任何帮助。谢谢!

2011 年 6 月 2 日更新 1

经过进一步挖掘,问题更多的是进程永远不会真正退出,它们被操作系统杀死更为常见。

这意味着当您选择“退出”活动监视器中的进程或关闭计算机时,不会调用终止委托方法。

运行以下 Applescript 时,会调用委托方法:

0 投票
1 回答
449 浏览

objective-c - NSApplication 代表问题

我想知道- (void)applicationWillTerminate:(NSNotification *)notification当系统关闭并且应用程序被告知退出时是否仍然调用。

我正在研究一个需要在退出时执行一些操作的代理,但我不确定是否调用了委托。

谢谢!

0 投票
1 回答
147 浏览

macos - osx 和 objc - 为插件运行第二个运行循环?

C程序员在这里。我正在尝试使正在运行的 OSX 应用程序的插件打开它自己的窗口,接受按钮按下,关闭窗口并返回插件 - 不要退出应用程序。

我已经能够使用 NSApp 打开一个窗口,我什至还有一个按钮,但它不会做任何事情。

我是这样设置的。通常,您 [button setTarget: self],但是,这是在普通的 c 函数中,并且没有“self”。我不知道如何从 c 调用 objc 方法,如果这是我需要解决的问题。我只想在按下按钮时调用 fauxAction 方法。

这是插件的窗口——不是主应用程序。我不能让他们穿越电线。[NSApp run] 并将退出菜单放在上面会退出主应用程序,我猜是因为运行循环包装了正在执行的线程。

任何帮助,将不胜感激。我觉得我在这里淹死了。

0 投票
1 回答
884 浏览

macos - Mac 应用程序如何确定启动它的方法?

我有一个 Mac OS X 应用程序,它也是一个协议处理程序(例如,Safari 是 HTTP 和 HTTPS 协议的协议处理程序)。因此,当用户在任何应用程序中单击 myscheme://some-kind-of-info 形式的链接时,我的应用程序将启动以处理该链接。

现在我需要能够确定应用程序是通过这种链接单击启动的,还是通过任何其他方法启动的。换句话说,它是通过链接点击以外的任何方式启动的。(在这些情况下,我希望应用程序保持打开状态,但如果它是通过链接启动的,它应该退出并忽略该链接。这样它只在已经运行时才运行。)

启动时应用程序中是否有某种方法可以自省并发现它是通过标准方法而不是 AppleScript GetURL 事件启动的?我想通过记录的方法找出答案,而不是 - 例如 - 让我的应用程序仅在运行半秒后打开这些链接。

0 投票
2 回答
737 浏览

objective-c - 如何在 Objective-C 中初始化一个窗口?

对于 Mac 图形应用程序(不是 iPhone),我需要类似 Java 中的 main 方法,这是使程序运行的第一个方法。我一直在研究诸如 NSViewController 和 NSWindow 对象之类的东西。我环顾四周,但在任何地方都找不到这个看似简单的问题的答案。(顺便说一句,我对此很陌生)

谢谢

0 投票
2 回答
2610 浏览

cocoa - 最后一个窗口关闭后退出应用程序

我想在最后一个主窗口关闭时关闭我的应用程序。我无法使用applicationShouldTerminateAfterLastWindowClosed:,原因如下:
1. 在显示主窗口之前,会显示一个确认窗口,当此窗口关闭时,应用程序不应退出。
2. 关闭主窗口后应用程序应该退出,即使有任何帮助窗口仍然打开。

0 投票
1 回答
229 浏览

objective-c - 响应“隐藏其他人”Mac OS X

我正在寻找类似于NSWorkspaceDidHideApplicationNotification用户在任何正在运行的应用程序中选择“隐藏其他人”时的通知或回调。我想知道是否有人知道 api 或在检测任何应用程序中的“隐藏其他人”操作方面有一些建议。

0 投票
2 回答
2732 浏览

cocoa - 在可可中创建 NSApplication?

我已经搜索了很长一段时间,但根本找不到任何东西,我已经有了可以创建的窗口,但是现在当我尝试为它调用 makeKeyAndOrderFront 时,没有应用程序可以调用它,所以我是想知道是否有人可以快速举例说明如何创建应用程序?我发现它是 NSApplication 并且我需要 setDelegate 等,但不确定到底需要什么。例如,要创建一个窗口,我需要以下代码:

那么任何人都可以给我相关的代码,但是对于 NSApplication,我已经有按钮和窗口了?

0 投票
2 回答
338 浏览

python - PYObjC NSWindow 是 NoneType?

该窗口是在另一部分制作的,看起来很好,但我明白了:

: 'NoneType' 对象没有属性 'contentView'

有谁知道为什么它认为窗口是“NoneType”?谢谢你。

0 投票
1 回答
6741 浏览

c++ - Cocoa:将 NSApplication 集成到现有的 c++ 主循环中

我知道,我不是第一个尝试在 OSX 上将 Cocoa 与现有的 c/c++ 主循环一起使用的人,但我不太喜欢目前遇到的解决方案,所以我想出了一个不同的想法想讨论。我发现(在 glut、glfw、SDL 以及我认为的 QT 中)最常见的方法是使用轮询来替换 NSApplications 运行方法并自己处理事件:

这有一个很大的缺点,即 cpu 永远不会真正空闲,因为您必须一直轮询以检查是否有任何新事件,而且它不是 NSApplications 运行函数中唯一发生的事情,因此如果您可能会破坏一些细节使用这个替代品。

所以我想做的是保持可可 runLoop 完好无损。想象一下,您将在 c++ 中实现自己的计时器方法,这些方法通常会在您的主循环中进行管理和触发(这只是一个示例)。我的想法是将所有循环部分移动到辅助线程(因为据我所知,需要从主线程调用 NSApplication 运行),然后将自定义事件发布到我的 NSApplication 派生版本,该版本在其内部适当地处理它们发送事件:方法。例如,如果我的 c++ 循环中测量的计时器触发,我会向 NSApplication 发布一个自定义事件,该事件反过来运行我的应用程序的 loopFunc() 函数(也位于主线程中),该函数会适当地将事件发送到我的 c++ 事件链中. 首先,您认为这是一个好的解决方案吗?如果是,

otherEventWithType:location:modifierFlags:timestamp:windowNumber:context:subtype:data1:data2:

然后使用类似的东西:

通知 NSApplication。

我宁愿发布一个没有关于窗口的任何信息的事件(在 otherEventWithType 中),我可以简单地忽略那部分吗?

然后我想像这样覆盖 NSApplications sendEvent 函数:

很抱歉这篇长文,但这一直困扰着我,因为到目前为止我对这个主题的发现并不满意。这就是我在 NSApplication 中发布和检查自定义事件的方式吗?您认为这是将可可集成到现有运行循环中而不进行轮询的有效方法吗?