4
是否有任何方法可以確定Accelerate.framework在運行時上是否可從直接C或C++文件獲得?iOS - 確定Accelerate.framework在運行時是否可用
的例子我已經找到了條件編碼似乎都需要Objective-C的內省(例如,respondsToSelector
)和/或Objective-C中的API(例如,的UIDevice的systemVersion
成員)
是否有任何方法可以確定Accelerate.framework在運行時上是否可從直接C或C++文件獲得?iOS - 確定Accelerate.framework在運行時是否可用
的例子我已經找到了條件編碼似乎都需要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");
}
阿描述和可用性宏自動處理的弱鏈接。很簡單!謝謝! – 2010-08-20 22:29:38
您還需要將框架標記爲Xcode中的弱鏈接(目標 - >您的目標,按「角色」排序,將正確的更改爲較弱)。另外請注意,如果它們不是函數(如UIApplicationWillEnterForegroundNotification),則需要在弱鏈接符號旁邊貼上&,所以總是使用&可能是更好的主意。 – 2010-08-21 00:10:16