Ios iPhone应用程序被苹果拒绝,出现崩溃报告-无法复制

Ios iPhone应用程序被苹果拒绝,出现崩溃报告-无法复制,ios,iphone,Ios,Iphone,我对这起车祸报告完全不知所措。我在商店里已经有几个相当复杂的应用程序,最近我向其中一个提交了更新。我很快收到了回应,因为它在启动时崩溃而被拒绝。他们使用与我完全相同的SDK版本3.1.2。在对堆栈跟踪进行符号化之后,这就是崩溃的原因: Process: MyAppName [60] Path: /var/mobile/Applications/0EC19245-D3A4-47D0-94D9-XXXXXXXXXX/MyAppName.app/MyAppName

我对这起车祸报告完全不知所措。我在商店里已经有几个相当复杂的应用程序,最近我向其中一个提交了更新。我很快收到了回应,因为它在启动时崩溃而被拒绝。他们使用与我完全相同的SDK版本3.1.2。在对堆栈跟踪进行符号化之后,这就是崩溃的原因:

Process:         MyAppName [60]
Path:            /var/mobile/Applications/0EC19245-D3A4-47D0-94D9-XXXXXXXXXX/MyAppName.app/MyAppName
Identifier:      MyAppName
Version:         ??? (???)
Code Type:       ARM (Native)
Parent Process:  launchd [1]

Date/Time:       2010-01-19 15:43:46.804 -0800
OS Version:      iPhone OS 3.1.2 (7D11)
Report Version:  104

Exception Type:  EXC_CRASH (SIGABRT)
Exception Codes: 0x00000000, 0x00000000
Crashed Thread:  0
这是相关的堆栈跟踪

Thread 0 Crashed:
0   libSystem.B.dylib               0x0007e9ac __kill + 8
1   libSystem.B.dylib               0x0007e99c kill + 4
2   libSystem.B.dylib               0x0007e98e raise + 10
3   libSystem.B.dylib               0x0009363a abort + 34
4   libstdc++.6.dylib               0x000453b0 __gnu_cxx::__verbose_terminate_handler() + 376
5   libobjc.A.dylib                 0x00005858 _objc_terminate + 104
6   libstdc++.6.dylib               0x00043776 __cxxabiv1::__terminate(void (*)()) + 46
7   libstdc++.6.dylib               0x000437ca std::terminate() + 10
8   libstdc++.6.dylib               0x00043896 __cxa_throw + 74
9   libobjc.A.dylib                 0x00004714 objc_exception_throw + 64
10  Foundation                      0x000013c2 __NSThreadPerformPerform + 570
11  CoreFoundation                  0x00056a96 CFRunLoopRunSpecific + 1834
12  CoreFoundation                  0x00056356 CFRunLoopRunInMode + 42
13  GraphicsServices                0x00003cb8 GSEventRunModal + 108
14  GraphicsServices                0x00003d64 GSEventRun + 56
15  UIKit                           0x00002768 -[UIApplication _run] + 384
16  UIKit                           0x0000146c UIApplicationMain + 688
17  MyAppName                         0x0000ed6a main (main.m:13)
18  MyAppName                         0x000028e4 start + 44
对我来说,stacktrace几乎是无用的,它只是说当我们启动你的应用程序时,一个组件崩溃了,但我无法在类似的系统上复制它(唯一的区别是他们运行的是雪豹,我只是运行豹)

关于我下一步能做什么有什么建议吗?谢谢

  • 如果您正在运行Snow Leopard,请在项目中打开静态分析器
  • 启用NSZombieEnabled
  • 查看其他调试文档并使用Apple提供的工具。

  • 事实上,它并没有说你启动应用程序时组件崩溃了。坠机事件随时可能发生

    但它确实说明,它在NSThreadPerform中崩溃,这似乎是您试图对不再存在的对象调用performSelector,或者可能对不具有您试图调用的方法的对象调用performSelector


    因此,我会在主线程上查找使用performSelector的任何地方,并尝试从那里思考目标如何可能无效。

    运行雪豹怎么样?这是一个考虑因素,对苹果操作系统有深入了解的人认为这会影响它吗?除非这两个操作系统的工具有所不同,否则它不应该影响iPhone上的运行方式,毕竟iPhone是一个完全独立的设备。为什么Mac操作系统的版本很重要?这份崩溃报告说,该应用程序是为ARM编译的,因此它运行在iPhone或iPod上。它是在设备上崩溃,而不是在Mac上崩溃。检查Mac版本只是为了确保这没有影响,从而使断言无效:唯一的区别是……我意识到这是非常古老的,但你解决过这个问题吗?我也有同样的问题,一直在尝试解决它,但没有运气。谢谢你的建议,但跟踪跟踪不表明调用不是来自我的代码,我的应用程序调用的唯一东西是从UIApplicationMain开始。如果你看main.m,你看到的是,它基本上是永远循环的——所有跟踪都从main开始,因为那是调用所有东西的runloop。当您调用performSelector:withDelay:,它会添加一个选择器来调用队列,当您完成当前调用时,它会返回到主循环,然后主循环会看到有一个选择器要调用,并尝试调用该选择器,这在您的应用程序中会崩溃。因此,您必须找出要调用的选择器。它可能是通知,甚至是NSURL连接回调。这是一个崩溃的事实告诉我,应该被调用的对象已经不存在了,如果你只是尝试调用一个错误的选择器,你会看到一条消息“无法识别异常”。。。