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): 复制引用对象本身。
未完待续
test.jpg

你可能感兴趣的:(iOS开发一些小总结(一))