2010-06-10 5 views
1

objectA를 사용하여 NSMutableDictionary (dictA)를 만들려고합니다. 내 사전 (NSLog)을 보려고하면 각 키가 동일한 주소를 가리키고 있습니다. objectA 유형이 objectA이고 사전 설정에 사용됩니다. 또한 getObject를 시도하면 사전에 추가 된 마지막 키/값을 항상 가져옵니다. 나는 setValue를 시도하고 같은 결과를 얻었다. 내 물건에 문제가 있습니까? 해제 방법이 제대로 작동하지 않습니까? 내가해서는 안되는 것을 지키고 있습니까? 고맙습니다.NSMutableDictionary 메모리/주소, 출시가 작동하지 않습니까?

dictA = [[NSMutableDictionary alloc] init]; 
objectA *objectA = [[objectA alloc] init]; 

objectA.ID = 5; 
[dictA setObject:objectA forKey:@"apple"]; 
[objectA release]; 

objectA.ID = 50; 
[dictA setObject:objectA forKey:@"japan"]; 
[objectA release]; 

objectA.ID = 6; 
[dictA setObject:objectA forKey:@"paris"]; 
[objectA release]; 

objectA.ID = 11; 
[dictA setObject:objectA forKey:@"pizza"]; 
[objectA release]; 

// NSlog : 나는 당신이 의미 있으리라 믿고있어

apple = "objectA: 0x175830"; 
japan = "objectA: 0x175830"; 
paris = "objectA: 0x175830"; 
pizza = "objectA: 0x175830"; 
+0

objectA에 대해 'description' 메소드를 구현 했습니까? – Senseful

답변

1

는 :

objectA *objectA_1 = [[objectA alloc] init]; 

당신은 개체 만 한 번만를 해제해야합니다. 이는 사전이 요소를 제거 할 때마다 사전에 요소를 추가 할 때마다 객체를 자동으로 보유하기 때문에 요소에서 자동으로 release를 호출하기 때문입니다.

대신이 코드를보십시오 :

dictA = [[NSMutableDictionary alloc] init]; 
objectA *objectA_1 = [[objectA alloc] init]; 

[dictA setObject:objectA_1 forKey:@"apple"]; 
[dictA setObject:objectA_1 forKey:@"japan"]; 
[dictA setObject:objectA_1 forKey:@"paris"]; 
[dictA setObject:objectA_1 forKey:@"pizza"]; 
[objectA_1 release]; 

는 또한 당신이 NSLog 그것을 인쇄하는 방법을 알 수 있도록 사용자 정의 개체의 description 방법을 구현해야합니다.

관련 문제