【问题标题】:Cocoa Application quit unexpectedlyCocoa 应用程序意外退出
【发布时间】:2013-05-23 17:27:17
【问题描述】:

我写了一个Objective-C Cocoa应用程序,它可以打开我自己定义的一些独特的文件类型。如果我从 Xcode 运行我的应用程序并将这些唯一文件之一拖放到我正在运行的应用程序上,一切正常,它会打开文件。如果我运行我构建的应用程序,然后我将任何这些独特的文件拖放到它上面,那么它会退出并显示我的应用程序意外退出的消息。此外,如果我双击这些唯一文件中的任何一个,它会尝试使用我的应用程序打开它,但随后我会收到相同的消息,即我的应用程序意外退出。

我的AppDelegate 中有application:openFile,我的applicationDidFinishLaunching 中也不做任何事情。

有人遇到过类似情况吗?

编辑:

这是crash报告的链接

【问题讨论】:

  • 由于应用程序在加载一些需求之前完成启动而意外退出?
  • 你在考虑什么样的需求,那为什么我从 Xcode 开始会起作用?只是问一下,因为我真的没有任何线索,而且我对 Objective-c 还很陌生。
  • 应用程序需要什么才能打开文件?如果应用程序在使用Application openFile启动时没有它,我想应用程序会崩溃。
  • 应用程序只需要它自己,因为所有被操作的数据都在应用程序的“/Contents/”文件夹中。

标签: objective-c macos cocoa


【解决方案1】:

您可能会在

中找到崩溃报告
~/Library/Logs/DiagnosticReports/

打开看看。它应该可以让您缩小问题范围。

编辑 从您发布的崩溃日志中:

Crashed Thread:  0  Dispatch queue: com.apple.main-thread

所以我们需要查看线程 0 的错误。

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   libsystem_kernel.dylib          0x00007fff9ac05212 __pthread_kill + 10
1   libsystem_c.dylib               0x00007fff96563b54 pthread_kill + 90
2   libsystem_c.dylib               0x00007fff965a7dce abort + 143
3   libc++abi.dylib                 0x00007fff908b29eb abort_message + 257
4   libc++abi.dylib                 0x00007fff908b039a default_terminate() + 28
5   libobjc.A.dylib                 0x00007fff97366887 _objc_terminate() + 111
6   libc++abi.dylib                 0x00007fff908b03c9 safe_handler_caller(void (*)()) + 8
7   libc++abi.dylib                 0x00007fff908b0424 std::terminate() + 16
8   libc++abi.dylib                 0x00007fff908b161b __cxa_rethrow + 85
9   libobjc.A.dylib                 0x00007fff97366575 objc_exception_rethrow + 40
10  com.apple.Foundation            0x00007fff91d957bb -[NSAppleEventManager dispatchRawAppleEvent:withRawReply:handlerRefCon:] + 484
11  com.apple.Foundation            0x00007fff91d9556d _NSAppleEventManagerGenericHandler + 106
12  com.apple.AE                    0x00007fff9ac40078 aeDispatchAppleEvent(AEDesc const*, AEDesc*, unsigned int, unsigned char*) + 307
13  com.apple.AE                    0x00007fff9ac3fed9 dispatchEventAndSendReply(AEDesc const*, AEDesc*) + 37
14  com.apple.AE                    0x00007fff9ac3fd99 aeProcessAppleEvent + 318
15  com.apple.HIToolbox             0x00007fff9121a709 AEProcessAppleEvent + 100
16  com.apple.AppKit                0x00007fff98c14866 _DPSNextEvent + 1456
17  com.apple.AppKit                0x00007fff98c13e22 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 128
18  com.apple.AppKit                0x00007fff98c0b1d3 -[NSApplication run] + 517
19  com.apple.AppKit                0x00007fff98bafc06 NSApplicationMain + 869
20  Real5D.Real5D                   0x000000010edc3ea2 main + 34 (main.mm:13)
21  libdyld.dylib                   0x00007fff9582c7e1 start + 1

所以有一个未捕获的异常,来自处理事件的 Apple 应用程序框架中的某个地方。并且不是您的方法调用的结果,而是可能是在应用启动期间。

我不知道答案。您可以通过在 google/SO 中搜索崩溃日志中的各个文本位来进一步改进它,并查看它是否出现了任何内容。

我个人接下来要做的是非常仔细地检查 App 包的内容,将您正在运行的内容与 XCode 正确运行的内容进行比较。检查所有文件是否都在那里。

【讨论】:

  • 是的,我找到了。问题是我真的不明白里面有什么。我应该搜索什么,你能给我提示吗?我编辑了我的帖子并添加了一个指向我的崩溃报告的链接!
  • 我读到了这个topic,它说我可能有一个由 Objective-c 引发的异常,但有趣的是从 Xcode 运行它我不明白。你能给我一些建议,如何捕捉那个异常,这样我就可以知道我的代码的哪一部分泄漏了?
  • 在您的实用工具文件夹中的 Console.app 中查找有关异常的更多信息。
  • 我试过了,但不幸的是我什么也看不到...主要是因为我真的不知道我应该寻找什么。对我来说看起来很有帮助的东西并没有帮助。但我在 EDIT 部分的帖子中发布了崩溃报告。
  • 我不是崩溃日志方面的专家。我忍住希望其他人会介入。但他们没有,所以我的回答走得更远了。但我可能不会比你更进一步。
猜你喜欢
  • 1970-01-01
  • 2012-02-23
  • 1970-01-01
  • 1970-01-01
  • 2021-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多