iOS开发一些小总结(一)
static关键字区别
- static全局变量只初始化一次,防止在其他文件单元中被引用
- static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝
- static 局部变量只被初始化一次,下一次依据上一次结果值
内存分区情况
- 代码区: 存放函数二进制代码
- 数据区: 系统运行时申请内存并初始化,系统退出时由系统释放,存放全局变量、静态变量、常量
- 堆区:通过malloc等函数或者new等操作符动态申请得到,需要程序员手动申请和释放
- 栈区:函数模块内申请,函数结束时由系统自动释放,存放局部变量、函数参数
简述NotificationCenter、KVC、KVO、Delegate并说明他们之间的区别
- KVO(Key-Value-Observing):一对多,观察者模式,键值观察机制,它提供了观察某一属性变化的方法,极大简化了代码。
- KVC (Key-Value-Coding): 键值编码,一个对象在调用setValue的时候
- Delegate:通常发送者和接受者的关系是直接的一对一的关系,可以减少框架复杂度
- Notification:观察者模式,通常发送者和接收者的关系是间接的多对多的关系。消息的发送者告知接收者时间已经发生或者将要发送,仅此而已,接收者并不能反过来影响发送者的行为
- 区别
+ 效率肯定是delegate比NSNotification的高
+ delegate方法比NSNotification更加直接,需要关注返回值
+ 两个模块之间联系不是很紧密的时候,用NSNotification传值
浅拷贝和深拷贝的区别
- 浅拷贝(copy):只复制指向对象的指针,而不复制引用对象本身
- 深拷贝(mutabCopy): 复制引用对象本身。
未完待续