有没有办法测试Objective-C中是否存在C函数?我正在寻找像“respondsToSelector”这样的东西,但是对于C函数。
更具体地说,我正试图在iOS中测试“UIGraphicsBeginImageContextWithOptions(CGSize size,BOOL opaque>,CGFloat scale)”的存在。
感谢。
答案 0 :(得分:10)
if(&UIGraphicsBeginImageContextWithOptions != NULL)
UIGraphicsBeginImageContextWithOptions();
else NSLog(@"No UIGraphicsBeginImageContextWithOptions function");
答案 1 :(得分:2)
是的,请参阅weak linking上的文档。
在调用函数之前,检查函数指针是否为NULL是可行的。
答案 2 :(得分:1)
由于UIGraphicsBeginImageContextWithOptions
仅出现在iOS 4.0及更高版本中,因此您可以使用__IPHONE_OS_VERSION_MAX_ALLOWED
macro检查iOS目标版本:
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 40000
UIGraphicsBeginImageContextWithOptions(...);
#else
// Function not available, fail gracefully
#endif