0

我想使用一个常量(来自 ImageIO 框架的 kCGImagePropertyExifLensMake)。此常量从 iOS 6 开始可用。当我使用此常量并在 iOS 5 设备上运行项目时,它会崩溃:

dyld: Symbol not found: _kCGImagePropertyExifLensMake

即使代码没有被执行,只要在项目的任何地方包含常量就足以使应用程序崩溃。因此,在运行时检查 iOS 版本无济于事。

如何在我的项目中包含这个常量,以便我可以在 iOS 6 设备上使用它而不会在 iOS 5 上崩溃应用程序?

问候,

4

1 回答 1

2

对我来说,这似乎是 ImageIO 框架中的一个错误(或文档错误)。

根据文档kCGImagePropertyExifLensMake在 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 上运行。

于 2013-03-04T07:14:17.933 回答