【发布时间】:2010-08-20 21:13:31
【问题描述】:
有什么方法可以确定 Accelerate.framework 在运行时是否可用直接来自 C 或 C++ 文件?
我发现的条件编码示例似乎都需要 Objective-C 内省(例如,respondsToSelector)和/或 Objective-C api(例如,UIDevice 的 systemVersion 成员)
【问题讨论】:
有什么方法可以确定 Accelerate.framework 在运行时是否可用直接来自 C 或 C++ 文件?
我发现的条件编码示例似乎都需要 Objective-C 内省(例如,respondsToSelector)和/或 Objective-C api(例如,UIDevice 的 systemVersion 成员)
【问题讨论】:
通常的技巧是,您对框架弱链接,然后检查该框架导出的函数指针的实际可用性。如果框架因为不可用而无法链接,则函数将为NULL。
所以对于Accelerate.framework,你会做这样的事情:
#include <Accelerate/Accelerate.h>
if (cblas_sdsdot) {
NSLog(@"Yay we got Accelerate.framework");
} else {
NSLog(@"Oh no, no Accelerate.framework");
}
【讨论】: