使用set CameraDevice交换摄像头时崩溃iOS7

时间:2013-12-02 21:19:49

标签: ios ios7 crash camera

我的应用程序曾经在iOS 6.2上运行得很好。由于我们在交换相机时更新了iOS7(我们之前已经做过的事情)它崩溃了。

这是我的代码:

-(void) swapCameras
{
    if (self.cameraDevice == UIImagePickerControllerCameraDeviceRear)
    {
        [self setCameraDevice:UIImagePickerControllerCameraDeviceFront];
    }
    else 
    {
        [self setCameraDevice:UIImagePickerControllerCameraDeviceRear];
    }
}

如果我用UIImagePickerControllerCameraDeviceFront启动相机,它可以很好地工作。但是,如果我从UIImagePickerControllerCameraDeviceRear开始,或者在运行时尝试更改它崩溃。

此崩溃是否是iOS 7上的错误?其他人有没有这次崩溃?

提前致谢。

1 个答案:

答案 0 :(得分:0)

如果有人遇到同样的问题,我通过更新iOS版本找到了解决方案。 我在使用iOS 7.0.0时发生了这个错误。我将其更新到iOS 7.0.4并且它不再崩溃。苹果在这两个版本之间的任何更新中都可能修复了这个错误。

此外,由于此更新不是强制性的,并且某些用户可能没有更新到最新的iOS版本,因此我必须在代码中制作一个技巧来获取当前的iOS版本并避免崩溃。我是通过使用以下宏来完成的:

#define SYSTEM_VERSION_EQUAL_TO(v)                  ([[[UIDevice currentDevice]        systemVersion] compare:v options:NSNumericSearch] == NSOrderedSame)
#define SYSTEM_VERSION_GREATER_THAN(v)              ([[[UIDevice currentDevice]   systemVersion] compare:v options:NSNumericSearch] == NSOrderedDescending)
#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v)  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
#define SYSTEM_VERSION_LESS_THAN(v)                 ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)
#define SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(v)     ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedDescending)

然后,我在代码中使用它:

if(SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0") && SYSTEM_VERSION_LESS_THAN(@"7.0.4"))
{
    // Do your work to avoid crash
}