准备开发一个APP前的思考:
- 架构:
1、MVC:架构过时;
2、MVVM:新架构,可以采用; - 封装
1、网络请求一般使用第三方库AFNetworking,对AF的在封装;
2、自定义的tabBar;
3、常用控件或系统类的类别:如:
(1)UIButton:图片和title的四种位置布局封装;
(2)UILabble、UITextFiled、UIView、UIImageview等的初始化方式;
(3)NSString:在登录模块常用的:电话号码、邮箱、URL的正则判断,日期转换等;
(4)Appdelegate:比如极光推送,需要在appdelegate中添加很多代码,我们就可以把极光推送相关的代码,单独出来创建一个Category;同理程序初始化的rootVC等操作也可以单独出来操纵。 - 常用第三方库:
1、网络请求:AFNetworking;
2、约束:Masonry;
3、键盘:IQKeyboardManager;
4、数据模型:JSONModel;
5、网络图片加载:SDWebImage;
6、刷新加载:MJRefresh;
7、相机:TZImagePickerController;
。。。。。。 - 宏定义:
1、预编译头文件:pch,注意设置相对路径,否则在其他人的电脑上会变异错误;
2、全局常量System.h文件;
3、接口头文件; - 沙盒路径:注意判断文件是否存在时,要保持文件的相对路径,在拼接文件名
1、沙盒路径的获取封装; - 数据持久化:
1、plist文件:全国城市列表;
2、NSUserDefault单例类:只能保存对象类型,即NS开头的系统类;
3、归档 NSKeyedArchiver:可以通过NSUserDefault+ NSKeyedArchiver来持久化自定义的对象类型;
4、sqlite3:通常会使用FMDB对sqlite的在封装;
5、coreData:没使用过; - 控制器的父类:通过在基类中,可以统一设置页面背景颜色等信息。
- APP实现方式:
1、纯代码:
2、xib和SB
3、纯代码 + xib和SB:其实登录和我的两个模块,可以使用xib和SB可以减少很多代码量,而且这两个模块变动不大,如:个人中心的一下个人信息可以用一个静态的tableview就解决了;
开发中:
- UI方面,一般提供2x和3x,原型图可以用磨刀查看
- 接口调试方面:可用Postman
- 版本控制:git + sourceTree
发布:
- 苹果开发者账号:生成发布证书,配置app ID,生成发布描述文件PP文件,AppStore信息填写;