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 に答える