0

这是来自 Apple Developers 网站:

const void * CFArrayGetValueAtIndex (CFArrayRef theArray, CFIndex idx);

返回值
theArray 中 idx 索引处的值。如果返回值为 Core Foundation 对象,则所有权遵循 Core Foundation 内存管理编程指南中的“获取规则”。

现在,如何测试返回值是否为 CFType?

编辑:

刚刚在 /usr/lib/system/libsystem_c.dylib 中找到了一个名为 __isctype 的函数,它正是我想要的。有人知道更多关于这个功能的信息吗?

4

1 回答 1

2

简而言之,您应该始终了解提供给您的对象系列。

如果它不是与 CF 兼容的类型(包括NSObjects),那么您应该只通过显式文档知道。要么您构造了一个非常不寻常的 CFArray,要么客户端会指出这一点(例如,通过指定数组包含指向某个结构的指针)。这是一个安全的默认假设,并且在其 CFArray 中不返回与 CF 兼容的对象的每个调用都应使其响亮而清晰。

如果有疑问,您总是可以在开发过程CFRetainCFRelease返回一个对象(如果它不是 CF 类型,那应该会崩溃)。

于 2012-09-05T15:44:48.437 回答