Objective-C:如何检查是否支持C函数

ma1*_*w28 4 iphone cocoa-touch objective-c respondstoselector

如何执行运行时检查以查看是否可以使用UIGraphicsBeginImageContextWithOptions,仅从iOS 4开始提供.

我知道我可以检查[[UIDevice currentDevice] systemVersion],但Apple推荐使用像NSClassFromString()或者之类的东西respondsToSelector:.是否有respondsToSelector:对C函数?

Dan*_*son 10

这是我一直在使用的另一种选择.

C函数是指针.如果你"弱"链接到UIKit框架,在iOS 3上函数指针就是这样NULL,所以你可以通过这样做来测试函数是否存在:

if (UIGraphicsBeginImageContextWithOptions)
{
    // On iOS 4+, use the main screen's native scale factor (for iPhone 4).
    UIGraphicsBeginImageContextWithOptions(size, NO, 0.0);
}
else
{
    UIGraphicsBeginImageContext(size);
}
Run Code Online (Sandbox Code Playgroud)

另请参阅:如何在Xcode 4上弱化链接框架?