当我重新启动mac时,如果我正在开发的应用程序在重新启动期间正在运行,macos会在重新启动后立即启动该应用程序,并使用"-psn_0_65552"参数。我认为这与重新启动提示时启用的"重新登录时重新打开窗口"复选框有关。我试图找到关于这个论点的任何文件,但没有成功。所以,我的问题是:
- 这种行为有记录吗
- 我的应用程序应该能够处理任何其他奇怪的命令行参数
- 我可以避免在mac重启后重新打开我的应用程序吗
还没有其他人向您提供任何东西,所以这可能会有所帮助:
- 这种行为有记录吗
状态保存和恢复机制至少通过您可以调用的方法来部分记录,例如NSWindow
的restorable
&encodeRestorableStateWithCoder:
、NSWindowDelegate
的window:willEncodeRestorableState:
、NSApplication
的restoreWindowWithIdentifier:state:completionHandler:
等。然而,各种AppKit类如何保存和恢复所有信息并没有公开记录(文档中有这样的声明)。
- 我的应用程序应该能够处理任何其他奇怪的命令行参数
任何人的猜测。
- 我可以避免在mac重启后重新打开我的应用程序吗
也许吧。有些应用程序在重新启动时不会重新启动,无论是它们的作者控制了这一点还是它的偶然性,我都不知道。
这里有一个建议:为自己编写一个非常基本的GUI应用程序,它只需在启动时将参数和环境(您可以使用NSProcessInfo
来获取所有参数和环境)保存为用户默认值。从Xcode、Finder和Terminal为您的应用程序提供午餐。打开时重新启动。查看用户默认值(查看其沙箱并在Xcode中打开.plist
)。注意到什么了吗?想依靠它吗?你的电话。
你能想出其他方法来跟踪你的应用程序启动和用户发起的退出吗?也许在用户默认设置中设置和删除标志?玩得高兴
HTH-