检查Core Foundation中的功能可用性

时间:2012-08-01 20:35:29

标签: ios core-foundation

我想使用Core Foundation方法,该方法仅在最新的iOS SDK上提供,并且回退到以前的SDK的不同方法。是否有类似于Cocoa为NSObject做的事情?:

 - (BOOL)respondsToSelector:(SEL)aSelector

更多的上下文,让我们说ABAddressBookCreate()只能在iOS5中使用,我的应用程序的目标是iOS 4.3+。我想检查ABAddressBookCreate()在运行时是否可用,并根据具体情况执行不同的操作。

2 个答案:

答案 0 :(得分:4)

试试这个(不需要弱链接):

#include <dlfcn.h>

void *handle = dlopen("/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation", RTLD_NOW);
void *createFunc = dlsym(handle, "ABAddressBookCreate");

if (createFunc != NULL)
{
    // available
    ABAddressBookRef (*_ABAddressBookCreate)(void) = createFunc;
    // then use this function pointer as normally
}

如果您可以提供弱链接:

if (ABAddressBookCreate != NULL)
{
   // available
}

答案 1 :(得分:2)