弱参考问题

时间:2011-05-04 13:39:24

标签: iphone

我的应用程序使用CoreAudio和CoreVideo框架(在iOS4或更高版本中受支持)。现在我想让我的应用程序在设备3或更高版本中运行。为此我已经使核心音频和核心视频帧工作 弱参考。但它仍然给出同样的问题。

dyld: Symbol not found: _OBJC_CLASS_$_AVCaptureDevice
  Referenced from: /var/mobile/Applications/67EDB406-FBEF-4FA4-8B6A-752CD9E3DA31/TescoClubCard.app/TescoClubCard
  Expected in: /System/Library/Frameworks/AVFoundation.framework/AVFoundation

1 个答案:

答案 0 :(得分:4)

在iOS 4.0中引入了AVCaptureDevice类,因此当您的应用在4.0之前的设备上运行时,它将无法使用。您应该在应用程序中对代码进行条件化,以便首先检查是否存在此类,并且仅在其存在时使用其方法(即,如果您在4.0或更高版本的OS上运行)。

Using Weakly Linked Classes in iOS文档包含有关如何确定给定类是否可供您的应用使用的非常好的说明,该文档的相关部分Using Weakly Linked Methods, Functions, and Symbols说明了如何检查特定方法或功能。

基本上,您需要在条件语句中包含使用4.0及更高版本API的代码部分,以便具有早期操作系统的设备不会尝试使用该代码,因为在该版本的操作系统中不存在这些库。

SDK Compatibility Guide文档也可能有所帮助。