iOS - 确定Accelerate.framework是否在运行时可用

时间:2010-08-20 21:13:32

标签: c++ iphone c ios

有没有办法确定Accelerate.framework是否可以在运行时从直接C或C ++ 文件中获得?

我发现的条件编码示例似乎都需要Objective-C内省(例如respondsToSelector)和/或Objective-C apis(例如,UIDevice的systemVersion成员)

1 个答案:

答案 0 :(得分:4)

通常的技巧是你对框架弱链接,然后检查该框架导出的函数指针以获得实际可用性。如果框架因链接不可用而无法链接,那么该函数将为NULL

因此对Accelerate.framework你会做这样的事情:

#include <Accelerate/Accelerate.h>

if (cblas_sdsdot) {
    NSLog(@"Yay we got Accelerate.framework");
} else {
    NSLog(@"Oh no, no Accelerate.framework");
}

TN2064 - Ensuring Binary Backwards Compatibility

中对此进行了描述