我有一个使用CoreImage中提供的面部检测的项目,这个项目最初是在Xcode 4.6.3中使用部署目标为5.1的iOS6 SDK开发的。随着iOS7的发布,我更新为Xcode5和iOS7 SDK,将部署目标保持为5.1。
这很好,直到我在Xcode5中添加了一个新类,它引用了CIFaceFeature对象中的属性,特别是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上运行良好。
有人有这种错误的经验吗?是否有新添加的文件的设置,我需要更改,以使其链接到正确的框架?我在这里有点抓狂,因为我不知道问题是什么,而且我在代码的其他地方访问完全相同的属性,没有问题。
发布于 2013-10-17 00:37:49
您确定您引用的是属性而不是实例变量吗?您所看到的错误是由于核心图像的iOS 6版本中缺少一个实例变量。我可以在iOS 7标题中看到,在iOS 6中没有声明ivar。
如果您正在执行feature->hasLeftEyePosition或类似操作,您将访问实例变量,通常应该将其视为不应该直接使用的实现细节。如果您正在创建一个子类,只需说hasLeftEyePosition,也可以。您需要使用[feature hasLeftEyePosition]或feature.hasLeftEyePosition来使用该属性。
https://stackoverflow.com/questions/19416248
复制相似问题