0

我试图用 CFDictionaryRemoveValue 从字典中删除一个键值对。但它没有删除键和值。它也在删除后打印了键值对。

struct session *value = CFDictionaryGetValue(cfmdict,tiId); 
NSLog(@"The value is %d and %c", value->a, value->c); 
CFDictionaryRemoveValue(cfmdict,tiId); 
NSLog(@"The value is %d and %c", value->a, value->c);

输出

The value is 12 and L
The value is 12 and L
4

2 回答 2

4

该值不再在字典中,但仍在内存中,并且value仍然指向那里。尝试:

struct session *value = (struct session *)CFDictionaryGetValue(cfmdict,tiId); 
NSLog(@"The value is %d and %c", value->a, value->c); 
CFDictionaryRemoveValue(cfmdict,tiId); 
value = (struct session *)CFDictionaryGetValue(cfmdict,tiId); 
NSLog(@"The value is %d and %c", value->a, value->c);

看看会发生什么。

于 2011-05-16T07:43:31.180 回答
2

您的第一次调用CFDictionaryGetValue返回一个指向某个结构的指针。然后从字典中删除指向此结构的指针,但这不会影响已存储在value变量中的值。

于 2011-05-16T07:44:15.883 回答