2013-03-04 96 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