我想使用Core Foundation方法,该方法仅在最新的iOS SDK上提供,并且回退到以前的SDK的不同方法。是否有类似于Cocoa为NSObject做的事情?:
- (BOOL)respondsToSelector:(SEL)aSelector
更多的上下文,让我们说ABAddressBookCreate()只能在iOS5中使用,我的应用程序的目标是iOS 4.3+。我想检查ABAddressBookCreate()在运行时是否可用,并根据具体情况执行不同的操作。
答案 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)