首先,要说这是给我印象相当好的一个项目,东西非常齐全完备,感觉可以学到很多东西。开源真的棒。OC+Swift混编。多Project+Target+AppExtension+转屏+多种设备
疑问
git的branch分组怎么搞的(懂了)
本地化
网络模块cookies
数据库与网络服务同步
总结
头文件
.h文件中通常使用前向声明
而.m文件中,一旦引用的头文件数量较多最好将其归类,避免杂乱。
注释非常清晰。
属性权限管理非常规范。
编码细节
OC中重写时调用super方法的时机:init中super方法先于重写方法调用,deinit中super最后调用。
mark简明清晰
在不想让别人调用的方法中,使用断言之类的强制程序崩溃
问题
硬编码部分地方还是没有一个良好的解决方案。比如NSUserDefaults的key等。(个人的看法是用runtime获取类名然后自己处理。这个可以写在基类中,比较好修改而且比较统一)。
项目类名没有前缀
项目架构
多Project。(Project、Target之间的依赖)
目录架构比较多,需要研究一下后面补充。
AppDelegate
改写main.m中的main方法,test和正常情况使用两个不同的AppDelegate。(职责分离)
自定义AppDelegate。
直接使用Apple的Security框架,而不是SSKeyChain。(mark一下后面看)
代理方法中,在willFinishLaunching中做必要的配置,在didFinishLaunching中在做其他配置。这样应该可以提高加载的速度并且可以将代码分离为必要和非必要的两部分。shouldSaveApplicationState和shouldRestoreApplicationState是恢复app状态的两个代理方法。
Third Lib
静态代码检测-SwiftLint
Database
Coredata
数据结构的迁移更改都有文档,hin棒
TableView
Me
ImmuTable相关的工具(静态tableView helper,算是我之前设想的实现封装)
ImmuTableHandler接管tableView的数据源及代理,但是在代理中会判断target是否响应对应方法,如果响应了对应方法则则执行对应方法。(这里频繁判断target是否响应某方法,可以参考52法中的方法将其缓存)
网友评论