问题标签 [core-foundation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1287 浏览

c++ - 如何从函数地址或类中找到 CFBundleRef

是否可以从 Carbon.. 中的函数地址或类名获取 Bundle 引用(CFBundleRef)?

我知道 Objective-C 中有函数

并使用 Windows API

在 mac 上是否有任何与 C++ 类似或任何其他方法?

谢谢,阿比奈。

0 投票
2 回答
1737 浏览

iphone - 创建自定义 CFDictionary 回调

我正在尝试使用至少两种方法为 NSMutableDictionary 类实现类别:一种用于保留(不复制)其键的 NSDictionary,另一种用于弱引用其键(即对它们不做任何事情)的 NSDictionary。

在这两种情况下,值都被简单地保留。

因此,据说 CFDictionaryRef 与 NSDictionary 是免费桥接的,我实际上做了以下事情:

第二种方法(用于保留键)看起来很相似,此处不再介绍。代码中的可怕功能是:

一旦我没有找到用于保留和释放密钥的标准核心基础回调,我就不得不自己编写这些。

我计划将这些类别用于仅存储子类 NSObjects 的字典。问题是:对于这种情况,这些有效的回调吗?除此之外,我的代码还有什么问题吗?

0 投票
2 回答
1248 浏览

objective-c - 如何比较两个 CFUUID(Mac OS X Carbon/CoreFoundation)?

如何比较CFUUIDRefMac OS X 中 CoreFoundation Carbon 框架中的两个 s?除了将它们转换为字符串然后进行比较之外,是否有更简单的方法来检查两个 CFUUID 是否相等?

0 投票
1 回答
750 浏览

cocoa - 二进制 plist 中的格式化文本编码

我正在尝试编写一些编辑二进制 plist 文件的脚本。plist 描述了 DVD studio pro 文件中包含的对象。DVD studio pro 中的一个文本框似乎在 plist 中编码为描述文本字符串及其格式的 base64 数据。我似乎无法弄清楚如何理解这些数据。理想情况下,我希望能够更改文本字符串但不能更改格式。以下似乎描述了一个显示“此处的菜单标题”的文本框。有两个字符串,一个带有键名为“dictionary”,另一个称为“string”;两者都是CFData。有什么想法可以解析或将其转换为可以直接编辑的格式吗?我一直在玩用可可写一个小转换器,但还没有运气。

0 投票
1 回答
1213 浏览

iphone - iPhone - Objective-C NSURL 内存泄漏大量

使用NSURL. 我在很多不同的地方使用这种方法,并且一直使用 Leaks 工具接收内存泄漏。

对象管理:

使用地点:

交易地址:

在此处输入图像描述

0 投票
1 回答
1351 浏览

objective-c - 将 CFEqual 与 CFArray 和 CFDictionary 一起使用

我有包含 NSDictionaries 的 NSArray。我需要将其转换为 CFMutableArray,其中包含 CFMutableDictionary 类型的项目,其中包含 char* 键和值。

charEqual 和 charHash 定义如下:

现在我想使用 CFEqual 比较两个 CFArrayRef,但从未调用函数 charEqual 并且 CFEqual 总是返回“false”。

0 投票
1 回答
1252 浏览

xcode - 如何为 CFType 对象的分配、保留、释放和解除分配记录消息/中断执行?

我希望能够在每次分配、保留、释放或解除分配特定CFType对象(对于我当前的目的, a )时记录消息(最好中断调试器)。CGPDFDocument

因为没有需要a 的Create...()方法,所以我正在尝试像这样临时更改默认分配器:CGPDFDocumentCFAllocatorRef

其中MyLogAllocator()定义如下:

但是,似乎默认分配器(kCFAllocatorSystemDefault据我所知)对于 context.retain 和 context.release 有 NULL,所以我没有任何原始实现可以调用。这可能就是为什么当我尝试上面的代码时,我得到以下堆栈跟踪:

XCode 实际上并没有告诉我为什么它会停止,但是如果我尝试继续,我会得到:

无论我继续多少次,我都会得到相同的 SIGTRAP。我不知道如何解释它;我设置的唯一断点是objc_exception_throw.

需要注意的一件事是,LogRetain()并且LogAllocate()每个都从以下位置成功调用一次(按该顺序)CFAllocatorCreate()

然后LogAllocate()再次成功CFAllocatorAllocate()

_CFRuntimeCreateInstance()at #2 调用CFRetain()上面详述的问题之前。

有人可以帮我理解这里发生了什么(特别是默认分配器如何处理保留和释放,以及为什么我得到 SIGTRAP);如何修复它;以及是否有更好的方法来做我想做的事情?

(我想我可能能够弄清楚如何使用 DTrace 来探测CFRetain()和,并由forCFRelease()过滤,但我不知道要探测什么来解除分配(分配并不那么重要,因为我知道它是在 内部完成的)。此外,我更希望能够在保留/释放/解除分配时中断调试器,我认为使用 DTrace 是不可能的。)CFTypeIDCGPDFDocumentCGPDFDocumentCreateWithProvider()

更新:现在阅读了源代码后,CFRelease我意识到我误解了context.retainand的目的context.release——它们是为了保留和释放context.info. 所以上面描述的整个方法是行不通的。但是,也许 DTrace/Instruments 向导仍然可以发挥一些魔力?!

0 投票
3 回答
2693 浏览

iphone - 无法识别的选择器发送到实例

可能重复:
发送到实例的无法识别的选择器

谁能告诉我这个错误代码发生了什么?人苹果是神秘的。我刚刚通过 ObjectiveResource 对我知道的数据进行了调用。

0 投票
1 回答
2406 浏览

objective-c - 比较 NSCFString 和 NSCFBoolean

我正在使用 SBJsonParser 解析 JSON。输入可以是 0 或字符串(例如 a829d901093),如果为零,则返回 NSCFBoolean,如果返回其字符串 NSCFString。我怎么知道哪个被退回了?谢谢!

0 投票
1 回答
431 浏览

cocoa - 如何检查 CFPropertyList 的类型?

CFPreferences在 Mac OS X 上使用API 存储和检索每个用户和机器范围的应用程序设置时,CFPreferencesCopyAppValue返回 aCFPropertyListRef以表示检索到的设置。

我似乎找不到让我安全地测试CFPropertyList实际是 a 的代码,CFString所以我可以相信结果是我正在寻找的字符串。

将 CFPropertyList 对象转换回CFString//的正确方法是什么CFNumberCFWhateverElse