问题标签 [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.
c++ - 如何从函数地址或类中找到 CFBundleRef
是否可以从 Carbon.. 中的函数地址或类名获取 Bundle 引用(CFBundleRef)?
我知道 Objective-C 中有函数
并使用 Windows API
在 mac 上是否有任何与 C++ 类似或任何其他方法?
谢谢,阿比奈。
iphone - 创建自定义 CFDictionary 回调
我正在尝试使用至少两种方法为 NSMutableDictionary 类实现类别:一种用于保留(不复制)其键的 NSDictionary,另一种用于弱引用其键(即对它们不做任何事情)的 NSDictionary。
在这两种情况下,值都被简单地保留。
因此,据说 CFDictionaryRef 与 NSDictionary 是免费桥接的,我实际上做了以下事情:
第二种方法(用于保留键)看起来很相似,此处不再介绍。代码中的可怕功能是:
一旦我没有找到用于保留和释放密钥的标准核心基础回调,我就不得不自己编写这些。
我计划将这些类别用于仅存储子类 NSObjects 的字典。问题是:对于这种情况,这些有效的回调吗?除此之外,我的代码还有什么问题吗?
objective-c - 如何比较两个 CFUUID(Mac OS X Carbon/CoreFoundation)?
如何比较CFUUIDRef
Mac OS X 中 CoreFoundation Carbon 框架中的两个 s?除了将它们转换为字符串然后进行比较之外,是否有更简单的方法来检查两个 CFUUID 是否相等?
cocoa - 二进制 plist 中的格式化文本编码
我正在尝试编写一些编辑二进制 plist 文件的脚本。plist 描述了 DVD studio pro 文件中包含的对象。DVD studio pro 中的一个文本框似乎在 plist 中编码为描述文本字符串及其格式的 base64 数据。我似乎无法弄清楚如何理解这些数据。理想情况下,我希望能够更改文本字符串但不能更改格式。以下似乎描述了一个显示“此处的菜单标题”的文本框。有两个字符串,一个带有键名为“dictionary”,另一个称为“string”;两者都是CFData。有什么想法可以解析或将其转换为可以直接编辑的格式吗?我一直在玩用可可写一个小转换器,但还没有运气。
iphone - iPhone - Objective-C NSURL 内存泄漏大量
使用NSURL
. 我在很多不同的地方使用这种方法,并且一直使用 Leaks 工具接收内存泄漏。
对象管理:
使用地点:
交易地址:
objective-c - 将 CFEqual 与 CFArray 和 CFDictionary 一起使用
我有包含 NSDictionaries 的 NSArray。我需要将其转换为 CFMutableArray,其中包含 CFMutableDictionary 类型的项目,其中包含 char* 键和值。
charEqual 和 charHash 定义如下:
现在我想使用 CFEqual 比较两个 CFArrayRef,但从未调用函数 charEqual 并且 CFEqual 总是返回“false”。
xcode - 如何为 CFType 对象的分配、保留、释放和解除分配记录消息/中断执行?
我希望能够在每次分配、保留、释放或解除分配特定CFType
对象(对于我当前的目的, a )时记录消息(最好中断调试器)。CGPDFDocument
因为没有需要a 的Create...()
方法,所以我正在尝试像这样临时更改默认分配器:CGPDFDocument
CFAllocatorRef
其中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 是不可能的。)CFTypeID
CGPDFDocument
CGPDFDocumentCreateWithProvider()
更新:现在阅读了源代码后,CFRelease
我意识到我误解了context.retain
and的目的context.release
——它们是为了保留和释放context.info
. 所以上面描述的整个方法是行不通的。但是,也许 DTrace/Instruments 向导仍然可以发挥一些魔力?!
iphone - 无法识别的选择器发送到实例
可能重复:
发送到实例的无法识别的选择器
谁能告诉我这个错误代码发生了什么?人苹果是神秘的。我刚刚通过 ObjectiveResource 对我知道的数据进行了调用。
objective-c - 比较 NSCFString 和 NSCFBoolean
我正在使用 SBJsonParser 解析 JSON。输入可以是 0 或字符串(例如 a829d901093),如果为零,则返回 NSCFBoolean,如果返回其字符串 NSCFString。我怎么知道哪个被退回了?谢谢!
cocoa - 如何检查 CFPropertyList 的类型?
CFPreferences
在 Mac OS X 上使用API 存储和检索每个用户和机器范围的应用程序设置时,CFPreferencesCopyAppValue
返回 aCFPropertyListRef
以表示检索到的设置。
我似乎找不到让我安全地测试CFPropertyList
实际是 a 的代码,CFString
所以我可以相信结果是我正在寻找的字符串。
将 CFPropertyList 对象转换回CFString
//的正确方法是什么CFNumber
?CFWhateverElse