2013-03-04 94 views
0

我想使用常量(來自ImageIO框架的kCGImagePropertyExifLensMake)。該常量與iOS 6開始當我使用這個常量,並將其與崩潰的iOS 5的設備上運行的項目:iOS:在舊iOS SDK中使用新SDK中的常量

dyld: Symbol not found: _kCGImagePropertyExifLensMake 

它sufficies包括常量在項目的任何地方,即使代碼是未執行,導致應用程序崩潰。因此,在運行時檢查iOS版本並沒有幫助。

如何在我的項目中包含此常量,以便我可以在iOS 6設備上使用它而不會在iOS 5上崩潰應用程序?

問候,

回答

2

這似乎是在ImageIO的框架(或文檔錯誤)給我的錯誤。

根據documentationkCGImagePropertyExifLensMake已在iOS 4.3及更高版本中可用。

根據

IMAGEIO_EXTERN const CFStringRef kCGImagePropertyExifLensMake IMAGEIO_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0); 

CGImageProperties.h,它是在安裝iOS 5.0及更高版本。

但是,如果你檢查的ImageIO框架的符號與

$ nm /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.1.sdk/System/Library/Frameworks/ImageIO.framework/ImageIO | grep kCGImagePropertyExifLensMake 

0026a59c s _kCGImagePropertyExifLensMake 

小寫字母「S」表示符號是本地的,而不是出口。

作爲一種變通方法,您可以添加

const CFStringRef kCGImagePropertyExifLensMake = CFSTR("LensMake"); 

在某處你的應用程序,那麼它適用於iOS 5和6

+0

感謝。它適用於此修復程序。 – Hyndrix 2013-03-04 11:34:51