値オブジェクトの弱参照を持つ変更可能な辞書を作成しようとしています(キーは正常に動作します)。 これは、私はそれをやろうとしている方法です:弱参照を持つNSMutableDictionary:CFRetainをコールバックとして使用する際の警告
+ (id)mutableDictionaryUsingWeakReferencesWithCapacity:(NSUInteger)capacity
{
CFDictionaryKeyCallBacks keyCallbacks = {0, CFRetain, CFRelease, CFCopyDescription, CFEqual, CFHash};
CFDictionaryValueCallBacks valueCallbacks = {0, NULL, NULL, CFCopyDescription, CFEqual};
id<NSObject> obj = (id)(CFDictionaryCreateMutable(NULL, capacity, &keyCallbacks, &valueCallbacks));
return [obj autorelease];
}
残念ながら私はkeyCallbacksを宣言するときに警告(互換性のないポインタ型から初期化)を取得し、私はCFRetainを使用してそれを追跡してきたし、 CFRelease。
const void *MyCallBack (
CFAllocatorRef allocator,
const void *value
);
しかし、既存のCFRetainが
として宣言されている:何らかの理由でこれらのコールバックは、それは例がCFDictionaryRetainCallbackは、次のようになりますと言っているドキュメントで必要なプロトタイプ(CFDictionaryRetainCallbackとCFDictionaryReleaseCallback)と一致しません
CFTypeRef CFRetain(CFTypeRef cf);
これはallocatorパラメータがないため、コンパイラが警告を出していると思います。つまり、関数のシグネチャには完全に一致しません。
誰もこのようなことをやろうとしましたか?
私はiphoneに取り組んでいることを忘れてしまった。 –