我在我的应用提出了一些条件编码来检查AVCaptureDevice,但它仍然崩溃我的iPod Touch(iOS版3.1.3)此消息:AVCaptureDevice不断崩溃我的iPod Touch与OS 3
使dyld:符号不发现:_OBJC_CLASS _ $ _ AVCaptureDevice
从引用:/var/mobile/Applications/4286D40F-9E33-49AB-9AD9-4F66EB9331A5/TestApp.app/TestApp
预期:/系统/资源库/框架/ AVFoundation。框架/ AVFoundation
数据格式化程序暂时不可用,将在“继续”之后重新尝试。 (不安全的,此时调用dlopen的。)
mi_cmd_stack_list_frames:在堆栈没有足够的帧。
mi_cmd_stack_list_frames:在堆栈没有足够的帧。
在我的代码,我做条件检查是这样的:
#if (!TARGET_IPHONE_SIMULATOR)
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 40000 // __IPHONE_4_0
AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
// ... more code
#endif
#endif
我检查在这里和代码,使用AVCaptureDevice与此相同条件的其他地方。
我猜的iPod旧的IOS版本无法链接到新库,所以我?如何解决呢?
看来很奇怪,我需要使用不同的编译器来使应用程序与旧版本的操作系统兼容。这是唯一的方法吗? – TigerCoding 2011-01-23 13:32:04
你也可以使用一直工作的`NSClassFromString`技术。这只是更麻烦。无论如何,LLVM是更好的编译器(和未来),所以你现在可以做出转换。 – 2011-01-23 13:35:28