这是来自Apple Developers网站:
const void * CFArrayGetValueAtIndex( CFArrayRef theArray, CFIndex idx );
返回值
theArray中idx索引的值。如果返回值是Core Foundation对象,则所有权遵循Core Foundation内存管理编程指南中的“获取规则”。
现在,如何测试返回值是否为CFType?
编辑:
刚刚在/usr/lib/system/libsystem_c.dylib中找到了一个名为__isctype的函数,它正是我正在寻找的。有人更了解这个功能吗?
答案 0 :(得分:2)
简而言之,您应该始终了解提供给您的物品系列。
如果它不是CF兼容类型(包括NSObject
s),那么你应该通过明确的文档知道。你构造了一个非常不寻常的CFArray,或者客户端会指出这一点(例如通过指定数组包含指向某个结构的指针)。这是一个安全的默认假设,并且每次不在CFArray中返回CF兼容对象的调用都应该使其响亮而清晰。
如果有疑问,您可以在开发期间始终CFRetain
和CFRelease
返回的对象(如果它不是CF类型,则会崩溃)。