问题标签 [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.
objective-c - 设置 Cocoa 应用程序退出状态的任何好方法?
我有一个与服务器交互并显示 GUI 的 Cocoa 应用程序。如果出现致命错误,我会显示警报并退出。我想将退出状态设置为非零值以反映发生了错误,以便与其他一些基于 UNIX 的工具进行交互。
不幸的是,我一直无法找到这样做的好方法 - NSApplication 似乎没有任何方法来设置退出状态。目前,我已经将 NSApplication 子类化并添加了一个exitStatus
ivar(我在必要时在我的应用程序委托中设置),然后被覆盖-terminate:
,以便它调用exit(exitStatus)
. 这很好用,但对我来说似乎有点邋遢,更不用说我可能错过了标准terminate:
在幕后所做的一些重要事情。我不能调用[super terminate:sender]
我的子类方法,因为那exit()
没有给我设置状态的机会。
我错过了一些明显的东西吗?
cocoa - NSApplication orderFrontStandardAboutPanel:让我的关于面板稍微不那么标准
当 NSApplication 在收到 orderFrontStandardAboutPanel 消息时显示的标准 Cocoa about 对话框中添加额外的任意数据时,我有哪些选择(如果有的话)。
objective-c - 如何在 applicationWillFinishLaunching 委托中终止可可应用程序
在用户开始使用我的应用程序之前,我必须向用户显示自定义许可协议对话框。因此,我在 mainMenu.xib 中添加了新窗口,并使用模态显示该窗口
在 applicationWillFinishLaunching: 中,通过使我的主窗口隐藏使用在 Launch 时可见到未选中来委托。许可证窗口有两个按钮同意和不同意。如果用户点击同意按钮,我需要显示主窗口,如果他们选择不同意,我需要终止应用程序。
我尝试调用 [NSApp terminate];在 applicationWillFinishLaunching: 但它什么也没做。
请让我知道如何在 applicationWillFinishLaunching 中终止应用程序:
谢谢
cocoa - 如何实现自定义 NSApplication 终止:Cocoa 中的行为?
我正在尝试在 Cocoa 应用程序中实现自定义终止行为。通常,当我的应用程序正常退出时,它会执行最终运行时数据库清理,然后退出。NSApplication
每当[NSApp terminate:aSender]
被调用时,这都会在 AppDelegate(的委托)内部发生:
如果在运行时发生错误(例如数据库文件被删除),我会向用户显示错误,并让他们选择恢复(放回文件并重试)或退出。如果选择退出,我想退出应用程序跳过数据库清理,因为它不再可能。本质上,我想要这样的东西:
当然,问题在于获取gracefulTermination的值。
有没有办法将自定义变量传递给NSApp
何时terminate:
被调用,例如 infoDict,然后在内部接收它applicationShouldTerminate:
?
如果没有,是否有更好的方法来完成自定义终止行为?
据我所知,当terminate:
被其他对象调用时,会发生这种情况:
[NSApp terminate:self];
由foo(又名self)调用。- NSApp 发送它的委托:(
[aDelegate applicationShouldTerminate:self];
self是NSApp,不是foo)。 - aDelegate 接收消息并
applicationShouldTerminate:
在实现时执行。
foo似乎在某处消失了,当aDelegate收到消息时,它已经永远消失了,只NSApp
显示为发件人。这可以防止我将 foo 中的 infoDict 或只是一个普通的 infoDict 传递给包含自定义terminate:
行为的 Delegate。
我知道不使用[NSApp terminate:...]
类似exit()
. 虽然从我所读到的内容来看,这是不受欢迎的,因为它不适合可可。此外,它还可以防止在内部发生任何其他清理操作applicationShouldTerminate:
,即使在非正常退出期间也不应跳过这些操作。
objective-c - NSApplication endSheet:没有效果
好的,这真的难倒我:
我在窗口上创建了一个模式表
并尝试删除它
但它仍然存在。
我已经检查了所有明显的东西,比如 IB 连接,并确保 window 和 loginWindow 存在并且处于正常状态。
所以,问题是:我错过了什么吗?
objective-c - 将文件拖到 NSStatusItem
有人告诉我application:openFile:
,NSApp 的委托方法将允许我的应用程序通过将文件拖放到 Dock 中来打开文件,但这是否也适用于菜单栏中的 NSStatusItems?在尝试实施之前我想知道。
objective-c - NSApplication 辞职最前面的应用程序状态:隐藏 v. 停用
我有一个应用程序需要在计时器到期后成为最前面的应用程序,并在按下按钮启动计时器时退出最前面的状态,例如
- 单击“开始计时器”-> 应用程序退出最前面的应用程序
- 计时器到期 -> 应用程序成为最前面的应用程序
我故意解释了一些事情,因为玩活跃状态sharedApplication
并不能达到我想要的效果。
我通过执行 a 成为最前沿的应用程序,[[NSApplication sharedApplication] activateIgnoringOtherApps: YES]
并且效果非常好。
做相反的事情似乎是不可能的!?
[[NSApplication sharedApplication] deactivate]
不应该直接调用,但更重要的是不会将“命令选项卡顺序”中的下一个应用程序向前移动。该应用程序只是坐在那里显示其菜单栏,但它不再“活动”。[[NSApplication sharedApplication] hide: self]
退出活动状态并将“ Command-tab order ”中的下一个应用程序带到前面,但它也隐藏了所有应用程序窗口。
我需要某种方法将命令选项卡顺序中的下一个应用程序放在前面,而不隐藏我所有的窗口。
有没有这样做的好方法?
该解决方案应与 10.5 Leopard 和 10.6 兼容。
我确实有一个 1996 年左右的解决方案,但它涉及 Carbon API,我真的更喜欢使用 Cocoa 或至少 Foundation 方式来实现它。
任何帮助将不胜感激。
objective-c - NSApp 隐藏了什么:实际上对 NSWindow 实例做了什么?
我正在研究一个NSWindow
子类,我遇到了一些奇怪的行为,这让我质疑我对 Windows 如何在 Mac OS X 上工作的一些假设。
NSWindow
调用实例时究竟会发生什么[[NSApplication sharedApplication] hide: self]
?
所有不返回 NO 的窗口-(BOOL)canHide
将从屏幕上消失。[NSApplication sharedApplication] unhide: self]
然后,当应用程序变为活动状态或被调用时,所有窗口都会重新出现。
我曾假设这将通过拍摄当前窗口状态的快照来实现,然后调用orderOut:
所有NSWindow
实例,然后在调用时向后执行整个unhide:
操作。
然而,情况似乎并非如此。orderOut:
我的子类的方法NSWindow
没有被调用..实际上它也没有被隐藏。它确实设置setCanHide:
为 YES .. 发生了什么?
任何见解将不胜感激。
此致,
坦率
objective-c - Cocoa:从另一个类调用 App Delegate 方法
我目前正在尝试从自定义视图内的拖放操作中获取文件的路径,然后将该路径传递给我的应用程序委托。我目前正在使用以下内容:
但是,我不断收到一条消息,说我的应用程序委托没有响应“uploadFiles”方法。它在我的应用程序委托中声明。我是否以正确的方式访问 NSApplication?
谢谢。
macos - 构建 Mac OS X 应用程序而不是控制台
我有我的应用程序的一个端口,一个游戏,在 Mac OS X 上运行。我用 make 构建,并且只添加了几个 .mm 文件来访问来自 NSApplication、NSWindow 和 NSOpenGLView 的必需品。
- 我如何将它“转换”成一个合适的应用程序而不是当前的控制台表单?我是否将它与某些东西捆绑在一起,如果是的话,如何?或者它是某种类型的链接器设置(如在 Windows 中)?我必须使用 XCode 构建吗?
- 目前我只是“勾选”系统,即轮询事件而不是正确使用 OS X 消息泵。您能否指点我一些基本示例或教程,向我展示如何正确地做到这一点,同时仍然能够以固定的帧速率“勾选”我自己的东西?我说“示例或教程”,因为我在文档方面是盲目的。
谢谢!