キーチェーンのサービスコードを簡略化し、CFDictionarySetValue
と財団のNSString
を使用したいと思います。 CFDictionarySetValue
のCoreFoundation関数でFoundationのNSStringを正しく使うにはどうすればいいですか?
宣言はそのようになります:私は、例えば渡すとき
void CFDictionarySetValue(CFMutableDictionaryRef theDict, const void *key, const void *value)
ので、何が起こりますvalue
の@"This is a NSString"
パラメータ?私のケースでは、コンパイラは警告も静的解析も何も検出しません。実行時にはクラッシュはないので、実行時にすべてが処理されるか、[@"something" cStringUsingEncoding:NSUTF8StringEncoding]
を渡してconst void*
にキャストする必要がありますか?
NSLog(@"%s", CFDictionaryGetValue(query, kKeyForCStringInUTF8));
NSLog(@"%@", CFDictionaryGetValue(query, kKeyForNSString));
両方が同じ出力を与える:
私の調査結果は、ことを示しています!混乱しています...
CFとFoundationの間でオブジェクトを交換する際の一般的なルールは何ですか?一般的に受け入れられているコードスタイル、良い習慣がありますか?
を、私は、コードを「簡素化」しないことを決定しました私が上で示唆したように。オブジェクトの相互運用性が問題なので、NSMutableDictionaryに固執することができます。 – matm