3

最新のiOSSDKでのみ使用可能なCoreFoundationメソッドを使用し、以前のSDKでは別のメソッドにフォールバックしたいと思います。NSObjectに対してCocoaがそれを行う方法に似たものはありますか?:

 - (BOOL)respondsToSelector:(SEL)aSelector

もう少しコンテキストがあります。たとえば、ABAddressBookCreate()はiOS5でのみ使用可能であり、私のアプリはiOS4.3以降を対象としています。ABAddressBookCreate()が実行時に使用可能かどうかを確認し、それに応じてさまざまなアクションを実行したいと思います。

4

2 に答える 2

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
}
于 2012-08-01T21:02:30.943 に答える
2

私はそれを試したことがありませんが、おそらくこれは役に立ちます:

https://developer.apple.com/library/mac/#documentation/DeveloperTools/Conceptual/cross_development/Using/using.html

リスト3-2を確認してください。

于 2012-08-01T21:01:49.040 に答える