1
こんにちは、2つの異なるポインタが同じ場所を指すポインタを持つ構造体をアーカイブしたいのですが、エンコードデコード後に同じ場所を指していますか?NSKeyedArchiver with pointers
私の悪い英語のために申し訳ありません、あなたの答えと自由時間のために先に進んでください!
こんにちは、2つの異なるポインタが同じ場所を指すポインタを持つ構造体をアーカイブしたいのですが、エンコードデコード後に同じ場所を指していますか?NSKeyedArchiver with pointers
私の悪い英語のために申し訳ありません、あなたの答えと自由時間のために先に進んでください!
はい。同じオブジェクトを指す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]);
THX私は僕の一日を作った! –
@ user408141、私はいくつかのコードでこのステートメントをバックアップする。 –