最近我的应用遇到十分纳闷的事情,就是在测试机上测试好好的,放上架使用后人们总出现不同程度的错误导致闪退(是根据友盟的日志),目前我的应用大部分都是由于数组越界导致问题的(但测试就没有遇到过)。想问问大牛们是怎样控制和跟踪已上架项目的情况?毕竟友盟的仅显示了错误信息,没有来源不好跟踪。
crashlytics ,你可以试试。 数组越界其实你可以用一个category 重写数组的objectAtIndex 。如果越界返回nil 。总比崩溃对用户友好一些。我是这样做的。。
1楼 @Lithium 用catch的话,程序会在不正常状态,接下来会出现什么问题都是不可预知的,还不如让APP直接crash。 要完全避免crash基本上很难,只能尽最大能力预防或提早发现,我们现在的做法是: 1 使用crashlytics,跟踪线上用户crash时的详细信息。crashlytics的信息比友盟的详细很多,很多时候可以详细到代码行。并且可以添加自己的日志,这些日志会在crash报告中包含。 2 代码中使用NSAssert之类的防御性编程,让Debug版的APP在数据不符合预期时,抛出异常。 3 每次发布前都用xcode的静态分析工具,分析源代码。 4 尽可能的消灭编译警告。 5 在模拟器时测试时,要时不时运用一下模拟器的内存警告功能,这样会经常会碰到一些不是你预期的问题。 6 测试机最好是低端一点的机器,容易出问题。
这个要分析原因吧。 导致闪退的原因:1. 程序逻辑 2. 边界条件 3. 内存用量。 前面两个原因目前都是通过单元测试来保证。 内存这块需要测试时留心。 (如果lz熟悉instrument 会有帮助)
我的经验就是:心中有断点。。程序架构好的话,一看到闪退大概就知道是哪个模块代码的问题了。结合提示,在定位就容易了。因为一定是某个事件导致闪退,程序总不会什么都不执行就自己退了吧。。。