使用UIImagePickerController时3DTouch引起的Crash问题的解决--备用
2016-02-14 21:11
435 查看
一、crash的场景
程序中用到UIImagePickerController时,如果在IPhone6S上运行APP,当forceTouch 一个图片时程序会crash,并附带如下crash message:* Terminating app due to uncaught exception ‘NSInvalidArgumentException’, reason: ‘+[NSObject previewingContext:viewControllerForLocation:]: unrecognized selector sent to class 0x19f678020’
这种Crash的原因很可能是苹果自身SDK的一个bug,这点我们在苹果官网上可以了解一些。https://forums.developer.apple.com/thread/21932 因为只要是利用了个UIImagePickerController这个控制器,当我们forceTouch那个选择图片的view的时候,就会crash。
二、问题的解决
我们可以从 http://download.csdn.net/detail/smiling8866/9367050 下载一下这个工具类,然后在- (BOOL)application:(UIApplication )application didFinishLaunchingWithOptions:(NSDictionary )launchOptions方法中调用MSDPreventImagePickerCrashOn3DTouch();方法,就可以解决以上Crash.三、注意事项
在程序中引入以上工具类时,肯能会出现编译不过去报arm64错误,很可能是工具文件的后缀名不对。因为工具类中的代码大都是c++的,所以应该把后缀名改成 .mm;在编译的时候,一定要把程序中所有的断点都去掉,不然代码总会卡在try catch那段异常处理的代码中。
注意,3DTouch功能,只有在Iphone6S及其以后的版本支持,XCode要用7.0及其以后的版本,所以利用低版本的XCode是编译不过的,也没有任何意义。
相关文章推荐
- Android酷炫实用的开源框架(UI框架)
- Adafruit的樹莓派教程第十三課:電力控制
- Adafruit的樹莓派教程第十二課:感知運動
- 如何查看Ubuntu 蓝牙bluez 软件版本
- 300. Longest Increasing Subsequence LeetCode
- LeetCode -- Range Sum Query 2D - Immutable
- 62. Unique Paths LeetCode
- Digital Signal Processing 《ARM System developer’s Guide》Chapter-8
- UI界面下视频模式切换(多进程)
- Adafruit的樹莓派教程第十一課:DS18B20溫度傳感器
- Adafruit的樹莓派教程第九課:控制一個直流電機
- UIButton的selected状态
- xcodebuild打包ipa
- 8VC Venture Cup 2016 - Elimination Round A. Robot Sequence
- HDOJ 1005 Number Sequence
- QuickText | 热字串自动替换
- Codeforces 626A Robot Sequence 【水题】
- poj 2926 Requirements 【5维点集最远曼哈顿距离】
- Could not build module 'UIKit'问题
- PHP中include()与require()的区别说明