可扩展性:构建可扩展的iOS应用架构
稳定性治理:监控和分析崩溃日志来识别和修复潜在的问题。内存泄露。
iOS应用的稳定性可以通过多种方式来提升。首先,通过监控和分析崩溃日志来识别和修复潜在的问题。其次,通过优化代码和内存管理来减少卡死和崩溃的发生。例如,避免死锁、线程饥饿和内存泄漏等问题。此外,使用性能监控工具来检测应用的性能瓶颈,如卡顿和延迟,也是提高稳定性的重要手段。
灵活性:面向协议编程
1、不要过分相信服务器返回的数据会永远的正确。
2、在对数据处理上,要进行容错处理,进行相应判断之后再处理数据,这是一个良好的编程习惯。
解决方案:拦截存在潜在崩溃危险的方法,在拦截的方法里进行相应的处理,就可以防止方法的崩溃
步骤:
1、通过category给类添加方法用来替换掉原本存在潜在崩溃的方法。
2、利用runtime方法交换技术,将系统方法替换成我们给类添加的新方法。
3、利用异常的捕获来防止程序的崩溃,并且进行相应的处理。
1、简单问题引导
思路:重写NSNull的消息转发方法, 让他能处理这些异常的方法.
2、系统性解决:
其中AvoidCrash的代码如下:AvoidCrash源代码
附:NSException
iOS被开发者遗忘在角落的NSException-其实它很强大
单元测试分为3种:
逻辑测试:测试逻辑方法
异步测试:测试耗时方法(用来测试包含多线程的方法)
性能测试:测试某一方法运行所消耗的时间
为什么要使用单元测试:
经济上的问题:
假设要开发的是对接获取验证码接口的方法,难道运行一次就真的请求一个短信验证码?短信下发平台可是会¥扣钱¥的。更何况,万一第三方平台没有响应或超时,我们的测试就失败了,这种异步的、不确定的测试,无论从金钱还是时间上衡量,都不够经济,因此很难实现。
什么情况下时序使用单元测试(单元测试使用的注意事项):
1、不是所有的方法都需要测试。
例如:私有方法不需要测试!只有暴露在 .h 中的方法需要测试!面向对象有一个原则:开闭原则!
2、所有跟 UI 有关的都不需要测试,也不好测试。
把 业务逻辑 代码封装出来!变成可以测试的代码,让程序更加健壮!
3、一般而言,代码的覆盖度大概在 50% ~ 70%
从github上得知:YYModel测试覆盖度为83%,AFNetworking测试覆盖度为77%,两者都是比较高的。
解决:优化多线程处理,改善多线程嵌套严重,请求耗时的问题。
详细:原本项目,采用多线程嵌套的同步方式处理多个线程请求到数据后,再执行最后操作。经优化多线程处理为异步执行时,改善了多线程嵌套严重,请求耗时的问题。