- 是否有任何示例代码可用于在 Mac 应用程序中使用 PLCrashReporter?
- PLCrashReporter 是否也可以在命令行 Objective-C 程序中工作?
- PLCrashReporter 是否处理像 SIGTERM 这样的所有信号?
有足够的样本可用于 iOS,但不适用于 Mac。
有足够的样本可用于 iOS,但不适用于 Mac。
我从未使用过 PLCrashReporter,但在探索PLCrashReporter 网站几秒钟后,发现了一个线程,其中有人收到了作者关于 Mac 使用它的问题的回复。虽然它看起来好像是为 iOS 设计的,但“官方”意见似乎表明它不是 iOS 特定的,应该在 Mac OS 上运行良好。
无论如何,我认为你会更幸运地加入这个线程,这个线程是在一个多星期前开始的,截至本文发布之时。也许如果你添加自己的声音,作者会提供一个具体的例子。
不过,他们的文档提供的示例UIApplication
很可能与 Mac模拟几乎完全相同NSApplication
,只是稍作调整。我做出这个假设是因为作者似乎认为它可以在 Mac 上正常工作,而且很明显如何让它工作。如果我正在寻找 PLCrashReporter 以供我自己使用,我会做出这个假设,所以我做了我在那种情况下总是做的事情。我查看了文档和代码。快速浏览一下让我确信,只需用 Mac等效方法替换UIApplicationDelegate
协议方法就可以使其在 Mac 应用程序中工作。-applicationDidFinishLaunching:(UIApplication *)application
NSApplicationDelegate
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
该-applicationDidFinishLaunching:
方法可能已经在 Mac 应用程序模板 Xcode 为每个新项目提供的默认应用程序委托类中被删除。如果已经存在,只需将示例方法的主体复制并粘贴到存根中即可。确保您在第一个线程中遵循作者的构建阶段建议,以便在您构建应用程序时可以使用相关库和资源。
我还没有尝试过,但如果这样做了,我会将-handleCrashReport
方法逐字复制到我的应用程序委托中,并将钩子的主体复制到...DidFinishLaunching:
模板的主体中(您可能已经有一些代码;在您的之前或之后将其插入,如果它有任何区别,则以有意义的为准)。我会将必要的标头导入到应用程序委托中,因为否则它可能找不到PLCrashReporter
或其任何相关符号。我还要确保框架/库/资源已正确链接,并将其复制到应用程序包中,然后我会点击运行,看看会发生什么,边走边解决问题。
试试看。让我们知道怎么回事。