gpt4 book ai didi

cocoa - 具有弱引用的 NSMutableDictionary : warning when using CFRetain as a callback

转载 作者:行者123 更新时间:2023-12-03 16:51:47 43 4
gpt4 key购买 nike

我正在尝试创建一个可变字典,该字典具有值对象的弱引用(键行为正常)。这就是我尝试做的事情:

+ (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。由于某种原因,这些回调与所需的原型(prototype)不匹配(CFDictionaryRetainCallback 和 CFDictionaryReleaseCallback)

在文档中,它说示例 CFDictionaryRetainCallback 应该如下所示:

const void *MyCallBack (
CFAllocatorRef allocator,
const void *value
);

但是现有的CFRetain被声明为

CFTypeRef CFRetain(CFTypeRef cf);

它缺少分配器参数,这就是为什么我认为编译器会发出警告:它与函数签名不完美匹配。

有人尝试过做这样的事情吗?

最佳答案

不要那样做。使用NSMapTable

关于cocoa - 具有弱引用的 NSMutableDictionary : warning when using CFRetain as a callback,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4868034/

43 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com