Ios iPhone应用程序被苹果拒绝,出现崩溃报告-无法复制
我对这起车祸报告完全不知所措。我在商店里已经有几个相当复杂的应用程序,最近我向其中一个提交了更新。我很快收到了回应,因为它在启动时崩溃而被拒绝。他们使用与我完全相同的SDK版本3.1.2。在对堆栈跟踪进行符号化之后,这就是崩溃的原因: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
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几乎是无用的,它只是说当我们启动你的应用程序时,一个组件崩溃了,但我无法在类似的系统上复制它(唯一的区别是他们运行的是雪豹,我只是运行豹)
关于我下一步能做什么有什么建议吗?谢谢
事实上,它并没有说你启动应用程序时组件崩溃了。坠机事件随时可能发生 但它确实说明,它在NSThreadPerform中崩溃,这似乎是您试图对不再存在的对象调用performSelector,或者可能对不具有您试图调用的方法的对象调用performSelector
因此,我会在主线程上查找使用performSelector的任何地方,并尝试从那里思考目标如何可能无效。运行雪豹怎么样?这是一个考虑因素,对苹果操作系统有深入了解的人认为这会影响它吗?除非这两个操作系统的工具有所不同,否则它不应该影响iPhone上的运行方式,毕竟iPhone是一个完全独立的设备。为什么Mac操作系统的版本很重要?这份崩溃报告说,该应用程序是为ARM编译的,因此它运行在iPhone或iPod上。它是在设备上崩溃,而不是在Mac上崩溃。检查Mac版本只是为了确保这没有影响,从而使断言无效:唯一的区别是……我意识到这是非常古老的,但你解决过这个问题吗?我也有同样的问题,一直在尝试解决它,但没有运气。谢谢你的建议,但跟踪跟踪不表明调用不是来自我的代码,我的应用程序调用的唯一东西是从UIApplicationMain开始。如果你看main.m,你看到的是,它基本上是永远循环的——所有跟踪都从main开始,因为那是调用所有东西的runloop。当您调用performSelector:withDelay:,它会添加一个选择器来调用队列,当您完成当前调用时,它会返回到主循环,然后主循环会看到有一个选择器要调用,并尝试调用该选择器,这在您的应用程序中会崩溃。因此,您必须找出要调用的选择器。它可能是通知,甚至是NSURL连接回调。这是一个崩溃的事实告诉我,应该被调用的对象已经不存在了,如果你只是尝试调用一个错误的选择器,你会看到一条消息“无法识别异常”。。。