2010-11-30 3 views
1

안녕하세요, 두 개의 다른 포인터가 같은 위치를 가리키는 포인터가있는 구조체를 보관하려면 인코딩 디코딩 후 동일한 위치를 가리 킵니까?포인터가있는 NSKeyedArchiver

죄송합니다. 저의 영어 실력이 좋지 않으십니까?

답변

3

예. 동일한 객체를 가리키는 두 개의 키가있는 경우 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, 나는이 진술을 뒷받침하는 몇 가지 코드를 넣었다. –

관련 문제