0

定数 (ImageIO フレームワークの kCGImagePropertyExifLensMake) を使用したい。この定数は、iOS 6 以降で使用できます。この定数を使用して iOS 5 デバイスでプロジェクトを実行すると、次のようにクラッシュします。

dyld: Symbol not found: _kCGImagePropertyExifLensMake

アプリをクラッシュさせるには、コードが実行されていなくても、プロジェクト内の任意の場所に定数を含めるだけで十分です。そのため、実行時に iOS のバージョンを確認しても役に立ちません。

この定数をプロジェクトに含めて、iOS 5 でアプリをクラッシュさせることなく iOS 6 デバイスで使用できるようにするにはどうすればよいですか?

よろしく、

4

1 に答える 1

2

これは、ImageIO フレームワークのバグ (またはドキュメントのバグ) のように思えます。

ドキュメントによると、kCGImagePropertyExifLensMakeiOS 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 に答える