And*_*scu 1 cocoa default weak-references callback nsmutabledictionary
我正在尝试创建一个可变字典,它对值对象具有弱引用(键表现正常).这就是我试图这样做的方式:
+ (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];
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,我得到一个警告(在不兼容的指针类型初始化声明keyCallbacks时),我已经跟踪它使用CFRetain和CFRelease.由于某些原因,这些回调与所需的原型不匹配(CFDictionaryRetainCallback和CFDictionaryReleaseCallback)
在文档中,它说示例CFDictionaryRetainCallback应该如下所示:
const void *MyCallBack (
CFAllocatorRef allocator,
const void *value
);
Run Code Online (Sandbox Code Playgroud)
但现有的CFRetain被宣布为
CFTypeRef CFRetain(CFTypeRef cf);
Run Code Online (Sandbox Code Playgroud)
它缺少allocator参数,这就是我认为编译器发出警告的原因:它不是函数签名中的完美匹配.
有没有人试图做这样的事情?
| 归档时间: |
|
| 查看次数: |
1236 次 |
| 最近记录: |