Не удалось удалить значение из CFMutableDictionary - PullRequest
0 голосов
/ 16 мая 2011

Я пытался удалить пару ключ-значение из словаря с помощью 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

Ответы [ 2 ]

4 голосов
/ 16 мая 2011

Значение больше не находится в словаре, но все еще находится в памяти, и 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);

и посмотрите, что получится.

2 голосов
/ 16 мая 2011

Ваш первый вызов CFDictionaryGetValue возвращает указатель на некоторую структуру. Затем вы удаляете указатель на эту структуру из словаря, но это не влияет на значение, уже сохраненное в переменной value.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...