我的应用程序曾经在iOS 6.2上运行得很好。由于我们在交换相机时更新了iOS7(我们之前已经做过的事情)它崩溃了。
这是我的代码:
-(void) swapCameras
{
if (self.cameraDevice == UIImagePickerControllerCameraDeviceRear)
{
[self setCameraDevice:UIImagePickerControllerCameraDeviceFront];
}
else
{
[self setCameraDevice:UIImagePickerControllerCameraDeviceRear];
}
}
如果我用UIImagePickerControllerCameraDeviceFront启动相机,它可以很好地工作。但是,如果我从UIImagePickerControllerCameraDeviceRear开始,或者在运行时尝试更改它崩溃。
此崩溃是否是iOS 7上的错误?其他人有没有这次崩溃?
提前致谢。
答案 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
}