2011-07-21 18 views
0

NSKeyedArchiver/NSKeyedUnarchiverを使用して、Bluetooth経由でiPad経由でiPhoneリモコンにオブジェクトを送信しています。これは、hereのように動作します。エラー処理 - NSKeyedUnarchiver

ただし、リモートコントロールがアーカイブされていないデータ(たとえばランダムNSString)を受信すると、アプリケーション全体がクラッシュします。私は「アーカイブ内のデータがオブジェクトXであれば、それをアーカイブ解除して次のことを行うが、そうでなければ無視する」と言うことができるようにしたい。

NSKeyedUnarchiverでこれらのエラーを処理する方法はありますか?

- (NSMutableDictionary *)unpackReceivedNSMutableDictionaryFromData:(NSData *)receivedData { 
    NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:receivedData]; 
    NSMutableDictionary *receivedDictionary = [[unarchiver decodeObjectForKey:@"MyKey"] retain]; 
    [unarchiver finishDecoding]; 
    [unarchiver release]; 
    return receivedDictionary; 
} 

任意の提案は非常に歓迎されるでしょう:

は、ここに私のコードです!これはStackOverflowで私が初めて投稿したものです...

答えて

0

大丈夫ですが、多くのデバッグ後にわかりました。私はEXC_BAD_ACCESSの原因となったデータを以前にリリースしていました。 NSZombiesを使ってどこから来たのかを追跡し、そのデータリリースを削除しました。