【发布时间】:2012-05-07 23:49:32
【问题描述】:
Apple 提供了崩溃日志,其中解释了遇到的异常和原因如下:
异常类型:EXC_CRASH (SIGABRT) 异常代码:0x00000000、0x00000000 崩溃的线程:0 应用特定信息: * 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[__NSCFData dataUsingEncoding:]:无法识别的选择器发送到实例 0x1b4c20”
以下是在符号化崩溃日志后突出显示为崩溃原因的代码行
NSXMLParser *moveParser = [[NSXMLParser alloc] initWithData:[str_response dataUsingEncoding:NSUTF8StringEncoding]];
和
[[UAirship shared] registerDeviceToken:[deviceToken dataUsingEncoding:NSUTF8StringEncoding] withAlias:myAlias];
Apple 已在 iOS 5.1 版 iPhone 4 和 iPad 3G 上审查了此应用程序,每次都发生崩溃。而我们无法在任何平台上重现崩溃。 我们尝试在 iPhone4、iOS 5.1 的 iPhone 3GS、iOS 5.0 的 iPhone 3GS、iOS 4.3.2 的 iPhone 3GS 上进行调试,但没有产生崩溃。
谁能告诉我我使用的代码有什么问题?
这是编写这些行的代码块。
NSString *str_response=(NSString *)[dic objectForKey:SuccessKey];
NSXMLParser *moveParser = [[NSXMLParser alloc] initWithData:[str_response dataUsingEncoding:NSUTF8StringEncoding]];
moveParser.delegate = self;
[moveParser parse];
[moveParser release];
和
NSString *deviceToken=[[NSUserDefaults standardUserDefaults] objectForKey:@"devToken"];
[[UAirship shared] registerDeviceToken:[deviceToken dataUsingEncoding:NSUTF8StringEncoding] withAlias:myAlias];
【问题讨论】:
-
不确定是否有帮助,但这一行:
-[__NSCFData dataUsingEncoding:]: unrecognized selector建议您在已经是 NSData 对象的对象上调用“dataUsingEncoding:”。我会检查是否有某种方式可能发生这种情况。 “deviceToken”和“str_response”应该是字符串,对吧?他们被分配到哪里?他们能在某个时候成为 NSData 吗? -
只是一个愚蠢的问题,但它发生在我身上一次,您是否尝试使用发布版本重现此问题?
-
是的,我已经尝试过 Adhoc/release 构建和调试构建,但无法重现。
标签: iphone nsdata unrecognized-selector