因为很多人不适应我的代码规范 所以只仅供参考。不知道从哪里说起,就想到那里说到那里。
属性可以用到下面的几个单词进行声明,只针对ARC开发环境
Strong
Copy
Assgin
Weak
我说一下上面几个单词用到的地方,在除去NSString Block之外所有的对象应该声明为Strong
我现在的团队习惯声明为Weak 创建局部对象AddSubView之后 之后指向,这是错误的。因为你的指针只是被AddSubView保留,如果什么时候Remove 你的属性就为nil.
在NSString和Block声明地方使用Copy属性。有的人NSString使用Strong,我们都知道Strong和Copy分别是指向一个对象和从新生成一个对象,可以根据实际情况来声明,一般要使用Copy。
对于基本的数据类型一定要使用Assgin
对于XIB的属性使用Weak 代理,还有一些弱引用对象。
可以在实现的文件里面把属性的懒加载也就是get方法卸载页面的最下面,这样我们就只关注于上面的内容了。
对于一些控件我们只需要用户修改控件的属性,就可以在头文件声明readonly 实现文件再次声明。
我也喜欢进行Cocoapods托管,但是一些第三方库还是不支持。
Defines(存放定义的颜色 枚举 工程配置 字符串等等。记得这些配置我习惯分文件存放)
FrameWork(存放第三方的FW 和系统的)
Libs(第三方开源代码的库)
Plugins(对于我来说俗称插件话 管理各个功能块的插件 比如支付插件 管理各种支付)
Categories(存放自定义的各个分类)
Protocols(存放自定义个协议类)
Tools(项目用到的协议工具 比如汇率转换等等)
Requests(基于自己工程封装的请求库 只针对自己工程)
Controller (试图)
Controller(试图控制器)
View (分离的试图)
Models(数据模型)
ViewModels(用于数据解析)
Api(用于请求)
AppDelegate(存放AppDelegate文件)
Resouses(存在Plist 图片等等)
自从我开始用MVVM 我就觉得和我之前的一种很像
ViewController的View可以单独提出来 VC只负责Push的跳转 发起请求
View 负责VC的全部的试图 可以分离很多块
Model用于和后台接口数据模型的解析
ViewModel负责请求数据和解析数据
API负责整个VC的接口
很多文档都有 我就只说几点
命名一定要体现这个是干什么的 比我headImageView,我可以猜出来是头像 而且是UIImageView控件
全局属性使用_开头和属性的最好保持一致。