当前位置: 首页 > 知识库问答 >
问题:

无法使用-[NSObject(NSObject)DoesNotRecogniteSelector:]理解Apple崩溃日志

阮才俊
2023-03-14

这很奇怪,我可以在模拟器中运行我的应用程序,使用Xcode 5(5A1413)运行iPhone 4S和iPhone 5,没有任何问题,但当我将应用程序提交到iTunes商店时被拒绝,此日志由苹果提供。

这是我从苹果得到的信息:

我们发现你的应用程序在运行iOS 7.0的iPhone 5s上崩溃。2,这不符合应用商店审查指南。

我承认我是无知的,你能帮我理解一下这个崩溃日志吗:

Incident Identifier: 17461001-CE5D-451F-9BD5-FF513B76B03E
CrashReporter Key:   298a52ed29ad5cd48b1f745f998491771bd584a6
Hardware Model:      iPhone5,1
Process:             HomeClubBanesco [485]
Path:                /var/mobile/Applications/6C36584D-E12D-4BDB-995A-B1652CDA9E48/HomeClubBanesco.app/HomeClubBanesco
Identifier:          com.3pixelsmedia.HomeClubBanesco
Version:             2 (1.1)
Code Type:           ARM (Native)
Parent Process:      launchd [1]

Date/Time:           2013-10-10 23:21:28.291 -0430
OS Version:          iOS 7.0.2 (11A501)
Report Version:      104

Exception Type:  EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Triggered by Thread:  0

Last Exception Backtrace:
0   CoreFoundation                  0x31462e86 __exceptionPreprocess + 126
1   libobjc.A.dylib                 0x3b75d6c2 objc_exception_throw + 34
2   CoreFoundation                  0x314667b2 -[NSObject(NSObject) doesNotRecognizeSelector:] + 198
3   CoreFoundation                  0x314650b2 ___forwarding___ + 702
4   CoreFoundation                  0x313b3e94 __forwarding_prep_0___ + 20
5   Foundation                      0x31e05e78 -[_NSPlaceholderData initWithData:] + 124
6   HomeClubBanesco                 0x00106b76 -[HCBAppDelegate application:didRegisterForRemoteNotificationsWithDeviceToken:] (HCBAppDelegate.m:315)
7   UIKit                           0x33efe45a _UIXXRemoteNotificationRegistrationSucceeded + 146
8   UIKit                           0x33efefc4 _XRemoteNotificationRegistrationSucceeded + 88
9   AppSupport                      0x34c73b32 migHelperRecievePortCallout + 186
10  CoreFoundation                  0x3142d77a __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 30
11  CoreFoundation                  0x3142d716 __CFRunLoopDoSource1 + 342
12  CoreFoundation                  0x3142bee2 __CFRunLoopRun + 1402
13  CoreFoundation                  0x3139653c CFRunLoopRunSpecific + 520
14  CoreFoundation                  0x3139631e CFRunLoopRunInMode + 102
15  GraphicsServices                0x360cd2e6 GSEventRunModal + 134
16  UIKit                           0x33c4d1e0 UIApplicationMain + 1132
17  HomeClubBanesco                 0x00105812 main (main.m:17)
18  libdyld.dylib                   0x3bc56ab2 tlv_initializer + 2


Thread 0 Crashed:
0   libsystem_kernel.dylib          0x3bd0d1fc __pthread_kill + 8
1   libsystem_pthread.dylib         0x3bd74a4e pthread_kill + 54
2   libsystem_c.dylib               0x3bcbe028 abort + 72
3   libc++abi.dylib                 0x3b10c98a abort_message + 70
4   libc++abi.dylib                 0x3b1256e2 default_terminate_handler() + 250
5   libobjc.A.dylib                 0x3b75d936 _objc_terminate() + 190
6   libc++abi.dylib                 0x3b1231b0 std::__terminate(void (*)()) + 76
7   libc++abi.dylib                 0x3b122d12 __cxa_rethrow + 98
8   libobjc.A.dylib                 0x3b75d80a objc_exception_rethrow + 38
9   CoreFoundation                  0x313965b2 CFRunLoopRunSpecific + 638
10  CoreFoundation                  0x3139631e CFRunLoopRunInMode + 102
11  GraphicsServices                0x360cd2e6 GSEventRunModal + 134
12  UIKit                           0x33c4d1e0 UIApplicationMain + 1132
13  HomeClubBanesco                 0x00105812 main (main.m:17)
14  libdyld.dylib                   0x3bc56ab4 start + 0

Thread 1:
0   libsystem_kernel.dylib          0x3bcfa838 kevent64 + 24
1   libdispatch.dylib               0x3bc490d0 _dispatch_mgr_invoke + 228
2   libdispatch.dylib               0x3bc4363e _dispatch_mgr_thread + 34

Thread 2:
0   libsystem_kernel.dylib          0x3bd0dc7c __workq_kernreturn + 8
1   libsystem_pthread.dylib         0x3bd71e06 _pthread_wqthread + 306
2   libsystem_pthread.dylib         0x3bd71cc0 start_wqthread + 4

Thread 3:
0   libsystem_kernel.dylib          0x3bd0dc7c __workq_kernreturn + 8
1   libsystem_pthread.dylib         0x3bd71e06 _pthread_wqthread + 306
2   libsystem_pthread.dylib         0x3bd71cc0 start_wqthread + 4

Thread 4:
0   libsystem_kernel.dylib          0x3bcfaa84 mach_msg_trap + 20
1   libsystem_kernel.dylib          0x3bcfa87c mach_msg + 36
2   CoreFoundation                  0x3142d55c __CFRunLoopServiceMachPort + 152
3   CoreFoundation                  0x3142bc7c __CFRunLoopRun + 788
4   CoreFoundation                  0x3139653c CFRunLoopRunSpecific + 520
5   CoreFoundation                  0x313da1a6 CFRunLoopRun + 94
6   CoreMotion                      0x31a4e394 ___lldb_unnamed_function1407$$CoreMotion + 724
7   libsystem_pthread.dylib         0x3bd73c5a _pthread_body + 138
8   libsystem_pthread.dylib         0x3bd73bca _pthread_start + 98
9   libsystem_pthread.dylib         0x3bd71ccc thread_start + 4

Thread 5 name:  com.apple.NSURLConnectionLoader
Thread 5:
0   libsystem_kernel.dylib          0x3bcfaa84 mach_msg_trap + 20
1   libsystem_kernel.dylib          0x3bcfa87c mach_msg + 36
2   CoreFoundation                  0x3142d55c __CFRunLoopServiceMachPort + 152
3   CoreFoundation                  0x3142bc7c __CFRunLoopRun + 788
4   CoreFoundation                  0x3139653c CFRunLoopRunSpecific + 520
5   CoreFoundation                  0x3139631e CFRunLoopRunInMode + 102
6   Foundation                      0x31dd164c +[NSURLConnection(Loader) _resourceLoadLoop:] + 316
7   Foundation                      0x31e46dc2 __NSThread__main__ + 1058
8   libsystem_pthread.dylib         0x3bd73c5a _pthread_body + 138
9   libsystem_pthread.dylib         0x3bd73bca _pthread_start + 98
10  libsystem_pthread.dylib         0x3bd71ccc thread_start + 4

Thread 6:
0   libsystem_kernel.dylib          0x3bd0dc7c __workq_kernreturn + 8
1   libsystem_pthread.dylib         0x3bd71e06 _pthread_wqthread + 306
2   libsystem_pthread.dylib         0x3bd71cc0 start_wqthread + 4

Thread 7:
0   libsystem_kernel.dylib          0x3bd0dc7c __workq_kernreturn + 8
1   libsystem_pthread.dylib         0x3bd71e06 _pthread_wqthread + 306
2   libsystem_pthread.dylib         0x3bd71cc0 start_wqthread + 4

Thread 8:
0   libsystem_kernel.dylib          0x3bd0dc7c __workq_kernreturn + 8
1   libsystem_pthread.dylib         0x3bd71e06 _pthread_wqthread + 306
2   libsystem_pthread.dylib         0x3bd71cc0 start_wqthread + 4

Thread 9 name:  com.apple.CFSocket.private
Thread 9:
0   libsystem_kernel.dylib          0x3bd0d440 select$DARWIN_EXTSN + 20
1   CoreFoundation                  0x3143145e __CFSocketManager + 482
2   libsystem_pthread.dylib         0x3bd73c5a _pthread_body + 138
3   libsystem_pthread.dylib         0x3bd73bca _pthread_start + 98
4   libsystem_pthread.dylib         0x3bd71ccc thread_start + 4

Thread 0 crashed with ARM Thread State (32-bit):
    r0: 0x00000000    r1: 0x00000000      r2: 0x00000000      r3: 0x00002060
    r4: 0x00000006    r5: 0x3db3a18c      r6: 0x00000000      r7: 0x27d03584
    r8: 0x15e958a0    r9: 0x00000001     r10: 0x31f15124     r11: 0x00000000
    ip: 0x00000148    sp: 0x27d03578      lr: 0x3bd74a53      pc: 0x3bd0d1fc
  cpsr: 0x00000010

更新显示破碎的方法

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {

 NSLog(@"Usuario SI Acepto las notificaciones");
[self setDToken:deviceToken];
NSData *myToken = [[NSData alloc] initWithData:[[NSUserDefaults standardUserDefaults] objectForKey:HCBDeviceTokenPrefKey]];
if (![myToken isEqualToData:deviceToken]) {
    NSLog(@"Token no coincide");
        [[NSUserDefaults standardUserDefaults] setObject:deviceToken forKey:HCBDeviceTokenPrefKey];
    // Debo actualizar los datos en la db.
    if (![[[NSUserDefaults standardUserDefaults] objectForKey:HCBUserIDPrefKey] isEqualToString:@"1"]) {
        NSString *urlString = [NSString stringWithFormat:@"http://cmx.3pixelsmedia.com/homeclub/?l=iphone&updateDeviceID&deviceToken=%@&userID=%@",
                               deviceToken,
                               [[NSUserDefaults standardUserDefaults] objectForKey:HCBUserIDPrefKey]];
        NSLog(@"urlString : %@",urlString);
    }
}

NSLog(@"Device Token : %@",myToken);
}

共有1个答案

邵城
2023-03-14

在应用审查期间,应用收到一个EXC_CRASH(SIGABRT)异常。这意味着运行在应用程序中的代码检测到故障,因此它要求操作系统终止您的进程,这是通过SIGABRT信号完成的。

中止的起源是Object-C运行时在分派方法请求时检测到一个doesNot确认选择器问题,如异常回溯中所示

2   CoreFoundation                  0x314667b2 -[NSObject(NSObject) doesNotRecognizeSelector:] + 198

导致这种情况的代码是:

NSData *myToken = [[NSData alloc] initWithData:[[NSUserDefaults standardUserDefaults] objectForKey:HCBDeviceTokenPrefKey]];

这是因为NSData将假定用户默认具有设备令牌的NSData结果。如果未获得适当的NSData对象,它将向不知道NSData的此私有实现类的对象发送-[\u NSPlaceholderData initWithData:构造函数消息

以下测试代码通过实验证明了这一点:

NSData *myToken = [[NSData alloc] initWithData:[[NSUserDefaults standardUserDefaults] objectForKey:@"SomeKey"]];

NSLog(@"My data is %@ - ok since we can handle a nil", myToken);

id stringProperty = @"Some string";
NSData *problemToken = [[NSData alloc] initWithData:stringProperty];

NSLog(@"My data is %@ - we have probably crashed by now", problemToken);

退一步说,重要的是要了解崩溃的发生往往不是由于代码本身,而是由于代码运行的环境。

你的工作和失败案例有两个不同的因素。

  1. 您的应用程序在本地可能已通过先前的运行设置,其用户默认值为NSData令牌
  2. 您的应用程序本地测试可能使用的调试版本(默认配置)与您的发布版本(将发送给Apple)不同

尝试的事情:

  1. 在模拟器中,擦除内容和设置,然后重试您的应用程序。
  2. 在Xcode(模式设置)中,将部署版本从Debug更改为Relight。
  3. 放入测试HCBUserIDPrefKey键的用户默认值类型的代码。确保它是NSData(也检查无)。
 类似资料:
  • NSObject+MethodCallDependingType 是 Objective-C 类,根据特定的类型来指定方法。

  • NSObject+CLFNotificationObserver 是 NSObject 类,用来创建 NSNotification 观察器,处理 weakSelf/strongSelf dance。

  • 问题内容: 我已经读过类似这样的文章,其中介绍了在Swift中进行子类化或仅具有其本机基础而不进行子类化的区别。但是它们都有些过时,我对此主题尚不清楚。 什么时候应该继承?子类化与不子类化之间的实际区别是什么?Swift中的建议是什么? 问题答案: 苹果公司有关NSObject的文档介绍如下: NSObject是大多数Objective-C类层次结构的根类。通过NSObject,对象继承了运行时系

  • 问题内容: 我测试了一些用Swift编写的isa,发现它仅在NSObject是超类(直接或更高级)或使用’@objc’装饰时才有效。否则,它将遵循静态和vtable- dispatch样式,例如C ++。 定义没有Cocoa / NSObject基类的Swift类是否正常?如果我担心的话,这意味着要放弃Objective- C的大部分活力,例如方法拦截和运行时自省。 动态运行时行为位于属性观察器,

  • 我不明白我的问题在哪里。我的应用程序在启动时崩溃与此崩溃日志。 iOS 7.0。2(11A501)报告版本:104 异常类型: 00000020异常代码: 0x0000008badf00d高亮线程: 0 应用特定信息:com.myapps未能及时启动 已用CPU总时间(秒):4.420(用户4.420,系统0.000),10%CPU已用应用程序CPU时间(秒):0.714,2%CPU 线程0:0

  • 本文向大家介绍使用innodb_force_recovery解决MySQL崩溃无法重启问题,包括了使用innodb_force_recovery解决MySQL崩溃无法重启问题的使用技巧和注意事项,需要的朋友参考一下 一 背景 某一创业的朋友的主机因为磁盘阵列损坏机器crash,重启MySQL服务时 报如下错误: 二 分析     主要关注 mysqld got signal 11 的问题,从日志内