CFArrayGetValueAtIndex:如何确定返回值是否为CFType

时间:2012-09-05 15:18:04

标签: core-foundation

这是来自Apple Developers网站:

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

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

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

编辑:

刚刚在/usr/lib/system/libsystem_c.dylib中找到了一个名为__isctype的函数,它正是我正在寻找的。有人更了解这个功能吗?

1 个答案:

答案 0 :(得分:2)

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

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

如果有疑问,您可以在开发期间始终CFRetainCFRelease返回的对象(如果它不是CF类型,则会崩溃)。