创建 iOS 项目之前不要忘记做好以下事情
设置编码规范
一些编码规范推荐
ObjC
Apple 的 Cocoa 编码规范
GitHub 基于 Apple Cocoa 的编码规范
Google 的 ObjC 编码规范(需翻墙)
ObjC 之禅
Swift
Raywenderlich 官方编码规范
GithHub 的编码规范
确定架构
使用传统的 MVC 还是 MVVM 亦或是 VIPER
为项目命名,使用公司及项目名作为前缀,最好是 3 个字母,避免类名冲突
为项目添加 .gitignore
# Xcode
## Build generated
build/
DerivedData/
## Various settings
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata/
## Other
*.xcuserstate
# CocoaPods
Pods
Podfile.lock
另外提交到代码库时的提交日志也规定好提交规范,例如写清楚解决了什么问题,修复了 Bug 库中 ID xxx 的问题及修复方法等等,给出一个建议格式:
FIXED #400 修复 XXX 问题
ADDED 添加 XXX 功能
IMPROVED 调整 XXX 效果/功能
添加必要的项目依赖
使用 CocoaPods 引入必要的项目依赖,如 AFNetworking,SDWebImage 等等。
复杂的框架要解耦 Controller 之间的关联考虑是否要引入 Router 方式进行跳转,引入 Router 的库。
数据统计和崩溃收集是否需要第三方库的支持,引入友盟、Fabric 等。
添加常用的宏定义文件
多人合作时避免大家添加重复冲突的宏文件,先将常用宏文件引入,例如定义 NSLog宏,单例宏,尺寸宏等
确定接口规范,封装接口调用
引入 AFNetworking 后,创建自己的 AFXXXAPIClient,将用于接口加密的参数字段以及 token 等字段进行封装,另外可以统一处理网络请求的错误,请求网络的时候判断网络状态等。
设定应用目录
一般情况下,为了他人查找方便,所以我习惯于按照功能设置目录,每个功能下面再按照 MVC / MVVM 的方式创建目录,如下
|- Home
~~~|-- Models
~~~|-- Views
~~~|-- Controllers (或者是 ViewModels)
~~~|-- Stores
~~~|-- Helpers
|- Setting
~~~|-- ... (同上)
|- ...
代码结构设定
|- Life Cycle
|- Init
|- Public Method
|- (Event Response)
|- Actions
|- Gesture
|- Private Method
|- Delegate
|- Getters and Setters
为应用设置合适的 Scheme
分出线上正式区和线下测试区,以及不同语言为其创建不同的 Scheme,查看设置方式(需翻墙)
设置开发和发布证书
设置应用持续集成和交付过程
可以使用 Jenkins + Fir
参考文章
7 Things you must absolutely do before writing an iOS app(需翻墙)