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];