CoreImage で提供されている顔検出を使用するプロジェクトがあります。これは、最初は Xcode 4.6.3 で開発され、展開ターゲットが 5.1 の iOS6 SDK を使用しています。iOS7 のリリースに伴い、Xcode5 と iOS7 SDK に更新し、デプロイ ターゲットを 5.1 のままにしました。
CIFaceFeature オブジェクトのプロパティを参照する新しいクラスを Xcode5 に追加するまで、これは問題ありませんでしたhasLeftEyePosition
。このコードは、iOS7.02 を実行する iPhone5S と iOS7.02 を実行する iPod 第 5 世代で問題なくビルドおよび実行されますが、iOS6.1 を実行する iPhone4 でデバッグで実行しようとすると、デバイスにスプラッシュ スクリーンが表示されます。コンソールに次の出力が表示されます。
dyld: Symbol not found: _OBJC_IVAR_$_CIFaceFeature.hasLeftEyePosition
Referenced from: /var/mobile/Applications/...
Expected in: /System/Library/Frameworks/CoreImage.framework/CoreImage
in /var/mobile/Applications/...
CoreImage.framework がリンク対象として含まれていることを確認しました。このエラーの奇妙な点は、Xcode 4.6.3 で追加されたファイルのコード ベースの別の場所にある CIFaceFeature オブジェクトのプロパティにアクセスすることです。
hasLeftEyePosition
また、アプリにアクセスする新しく追加されたコードをコメントアウトすると、iOS6.1 iPhone4 で問題なく動作することも確認しました。
このタイプのエラーの経験がある人はいますか? 新しく追加されたファイルを正しいフレームワークにリンクするために変更する必要がある設定はありますか? 問題が何であるか、コードの他の場所でまったく同じプロパティに問題なくアクセスしているという事実がわからないので、ここでストローをつかんでいます。