2010-11-30 6 views
1

こんにちは、2つの異なるポインタが同じ場所を指すポインタを持つ構造体をアーカイブしたいのですが、エンコードデコード後に同じ場所を指していますか?NSKeyedArchiver with pointers

私の悪い英語のために申し訳ありません、あなたの答えと自由時間のために先に進んでください!

答えて

3

はい。同じオブジェクトを指す2つのキーがある場合、NSKeyArchiverは同じオブジェクトを指すキーとしてそれらを復元します。

NSString *one = @"1"; 
NSString *two = @"2"; 
NSMutableDictionary *dict = [[[NSMutableDictionary alloc] initWithObjectsAndKeys:one, @"one", two, @"two", one, @"three", nil] autorelease]; 
NSLog(@"one=%d, two=%d, three=%d", [[dict objectForKey:@"one"] hash], [[dict objectForKey:@"two"] hash], [[dict objectForKey:@"three"] hash]); 
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:dict]; 

dict = nil; // no tricks! 

dict = [NSKeyedUnarchiver unarchiveObjectWithData:data]; 

NSLog(@"one=%d, two=%d, three=%d", [[dict objectForKey:@"one"] hash], [[dict objectForKey:@"two"] hash], [[dict objectForKey:@"three"] hash]); 
+1

THX私は僕の一日を作った! –

+0

@ user408141、私はいくつかのコードでこのステートメントをバックアップする。 –

関連する問題