孔子曰:温故而知新
每次项目完成之后,习惯性的做一些总结,也算是对自己目前技术能力的评估,哪里掌握了,哪里没有掌握好。
废话不多说,直奔主题
Tips:
一步一个脚印,别慌别乱,坑是自己跳的,Bug 是自己写出来的,要是实在是难受,扇自己两个耳光
之前说编程就是算法和数据结构,不懂甚至反驳说不会算法和数据结构也能够写出来,没有关系,现在你应该明确知道,算法和数据结构的重要性,不会就努力去学
注意你的代码质量,能够进行封装的时候进行封装,代码复用大学老师就告诉很重要了
如果项目涉及文件下载功能,请对沙盒内文件夹进行规范化操作,尽量做到见名知意,好处是调试的时候能够准确找到文件所在,同时苹果也是提倡见名知意
如果你的项目涉及文件下载功能,请一定要记住一点,在一个文件内,不可能出现相同名字的两个文件。这很浅显,但是越细节的东西,在忙起来的时候可能越容易忘记
校验文件是否存在本地,尽量使用 iOS SDK 自身提供的 API,善用系统提供的 API ,这无可厚非,不要自作聪明的去写什么系统已经能够支持的算法。视需求而定,但是要善用系统 API
不要过分的相信主流第三方,就算是 SDWebImage、AFNetworking 同样是有坑存在。第三方的存在是为了解决主流问题,如果业务属于特殊情况,一定要自行封装,甚至是修改源码,符合业务需求为止
如果没有读过第三方源码,不要怀疑现在读是不是已经晚了,你能意识到的时候就还不算晚,什么也别想,读起来,读明白,读不明白就 Google 或者 Bing
以上的所有,说给自己听,同时希望同道中人能够共勉。下面说说我的项目,可能一次性不能完成,会分为多个章节完成。
一、 应用场景分析
- 应用主要是服务公司加盟部门人员使用,招商加盟讲座,以及销售人员销售时,展示给客户使用,多数情况下,会在没有网络的会场或者是网络极差的情况下使用,所以要求必须做数据的离线缓存。
- 应用面向的群体是公司目标客户,如果在使用过程中,出现闪退、卡顿情况目标客户可能会感觉很不好,所以性能优化要良好,尽量保证,在使用时不出现致命性问题
- 销售人员销售过程中,更多的项目讲解,iPad 应用仅仅是辅助功能,视频、图片的展示,是为了提供更好的销售效果,但是在整个销售过程中,使用的时间不占用整个销售过程的 3%,所以不能有太多的加载时间,要完全的时间,随用随走,保证稳定(有点像张小龙的小程序)
- 其他业务场景
二、需求
- iPad 项目,不需要进行 iPhone 适配,仅仅适配 iPad
- 左侧侧滑菜单,CenterController 没有遮罩
- TabBar 在屏幕左侧,类似于大众点评,与主流iPad 项目一致,我叫做 Dock 栏
- 不卡顿,尽量如丝顺滑、断网时可以使用,有网与否不影响整体使用
- 其他后续新增需求等
三、功能点
经过以上所有的论证以及和加盟部门实际使用人员碰头会之后,整理出一下所有的功能点,包括但不限于
- 业务功能点:
- 图片浏览器功能:点击图片能够进行图片浏览,图片基本操作,放大缩小、图片保存至本地相册等功能
- 视频播放器功能:能够播放视频,基本视频播放器功能,手势操作、视频播放器内下载视频功能
- 阅读 PDF 文档功能:最好能够直接通过 iPad 连接打印机之后打印
- 加载 HTML 功能:加盟部门人员长于销售,电脑操作以及富文本编辑能力不强,所以加载 HTML 容错性要足够强
- 无限级菜单:公司销售众多,幼儿园行业,幼儿园课程众多,变化频繁,种类繁多。要求可以无限级展示菜单、内容,同时动态布局
- 技术功能点
- 记录设备 UUID :由于应用不面向所有用户使用,同时考虑内容私密性,所以记录设备编码,后台可以对设备进行操作,是否允许设备获取数据
- 基本登录功能:员工以公司邮箱为账号,进行登录操作,Token 验证
- RESTful API:利用高缓存机制,不需要另外的资源发现机制、同时兼容性好
- 高缓存、动态化、组件化:高缓存主要体现在缓存内存高、时间短,动态化主要是根据返回数据进行实时布局,组件化主要是因为业务变更较多,为了以后能够更快的进行功能扩展、转移进行组件化设计
- 图片、视频、HTML、PDF 文件离线缓存
- 等等其他功能点