高质量的项目

一、管理

1、规范代码管理

2、搭建项目框架,制定代码规范

3、制订接口文档规范

4、统一封装满足多样化网络请求的网络库基础接口

5、组件的解耦封装

6、在当前工程中导入另一个工程文件

可扩展性:构建可扩展的iOS应用架构

稳定性治理:监控和分析崩溃日志来识别和修复潜在的问题。内存泄露。

iOS应用的稳定性可以通过多种方式来提升。首先,通过监控和分析崩溃日志来识别和修复潜在的问题。其次,通过优化代码和内存管理来减少卡死和崩溃的发生。例如,避免死锁、线程饥饿和内存泄漏等问题。此外,使用性能监控工具来检测应用的性能瓶颈,如卡顿和延迟,也是提高稳定性的重要手段。

灵活性:面向协议编程

二、风险预测

1、风险可能

1、不要过分相信服务器返回的数据会永远的正确。

2、在对数据处理上,要进行容错处理,进行相应判断之后再处理数据,这是一个良好的编程习惯。

2、思考:如何防止存在潜在崩溃方法的崩溃

3、解决方案

解决方案:拦截存在潜在崩溃危险的方法,在拦截的方法里进行相应的处理,就可以防止方法的崩溃

步骤:

1、通过category给类添加方法用来替换掉原本存在潜在崩溃的方法。
2、利用runtime方法交换技术,将系统方法替换成我们给类添加的新方法。
3、利用异常的捕获来防止程序的崩溃,并且进行相应的处理。

4、消息转发机制

iOS的消息转发机制详解

5、消息转发机制的运用

1、简单问题引导

用Runtime解决服务器返回NSNull问题

思路:重写NSNull的消息转发方法, 让他能处理这些异常的方法.

防止Crash 组件

2、系统性解决:

iOS runtime实用篇 —避免常见崩溃

其中AvoidCrash的代码如下:AvoidCrash源代码

附:NSException

iOS被开发者遗忘在角落的NSException-其实它很强大

利用OC的消息转发机制实现多重代理

三、资源

app瘦身

四、代码

1、单元测试

单元测试分为3种:

逻辑测试:测试逻辑方法
异步测试:测试耗时方法(用来测试包含多线程的方法)
性能测试:测试某一方法运行所消耗的时间

为什么要使用单元测试:

经济上的问题:

假设要开发的是对接获取验证码接口的方法,难道运行一次就真的请求一个短信验证码?短信下发平台可是会¥扣钱¥的。更何况,万一第三方平台没有响应或超时,我们的测试就失败了,这种异步的、不确定的测试,无论从金钱还是时间上衡量,都不够经济,因此很难实现。

什么情况下时序使用单元测试(单元测试使用的注意事项):

1、不是所有的方法都需要测试。
例如:私有方法不需要测试!只有暴露在 .h 中的方法需要测试!面向对象有一个原则:开闭原则!
2、所有跟 UI 有关的都不需要测试,也不好测试。
把 业务逻辑 代码封装出来!变成可以测试的代码,让程序更加健壮!
3、一般而言,代码的覆盖度大概在 50% ~ 70%
从github上得知:YYModel测试覆盖度为83%,AFNetworking测试覆盖度为77%,两者都是比较高的。

2、优化多线程处理,改善多线程嵌套严重,请求耗时的问题

解决:优化多线程处理,改善多线程嵌套严重,请求耗时的问题。

详细:原本项目,采用多线程嵌套的同步方式处理多个线程请求到数据后,再执行最后操作。经优化多线程处理为异步执行时,改善了多线程嵌套严重,请求耗时的问题。

3、定时器使用的优化

4、UITableView等的性能优化

5、优化代码逻辑处理(耗电量、耗流量)

性能优化