OC学习
+load
和+initialize
区别+load
: 是在类加载到内存的时候调用, 仅调用一次+initialize
: 是在第一次使用类或者子类的时候调用,会调用多次
runtime
runtime实现的机制是运行时机制,
用法:
- 遍历类中所有属性和方法,可以自己写一套字典转模型工具类
- 动态给分类添加属性,需求:当想把一个属性保存系统的类中交换方法,系统方法达不到我们需求,想给系统的方法扩充一些功能
- 动态添加方法
bounds
理解frame
: 控件可视范围 相对于 父控件bounds
: 也是指的是范围 指的是 控件可视范围 在 ‘内容中’ 区域 . 控件可视范围相对于内容内容
:每个控件都有自己内容,而且是无限大,而且这个控件的所有子控件都是相对于内容
数据传值
- 顺传:直接定义属性传值
- 逆传:代理,block,通知
- 通知传值:当谁也拿不到谁的事情,可以采取使用通知传值
KVC
KVC全称为
key value coding
即键值编码:运行时动态的给对象发送setValue:forKey消息 设置数据;- 当第一次观察一个对象时,Runtime会动态的创建一个继承自该对象所属类的子类 NSKVONotifying_(父类的名字)
- 这个新创建的子类重写了所有被观察属性的 setter 方法,并且在内部给观察者发送通知,通知所有观察对象值的更改
- 最后把这个对象所在类的 isa指针 指向这个新创建的子类
简述项目开发的步骤
- 独立开发:
- 需求文档:描述下应用功能
- 查看原型图:描述app每个界面 和 怎么与用户交互
- 根据原型图搭建基本项目结构,开始按模块去开发
- 界面搭建完,再去查看接口文档,请求数据,然后展示
- 迭代开发:
- 根据组长,项目经理提供excel去做,这里就有每月的任务
- 需要去寻找找到对应的类做事情,1.根据类名,去猜 2.通过断点去调试,一层一层去寻找
- 独立开发:
如何做一个新的模块
- 根据原型图,划分结构
- 搭建界面
- 参照接口文档,请求数据,展示数据
- 调整界面细节,提高用户体验
- 处理界面业务逻辑(功能)