面试整理

static和extern简单使用(用法)

  • static作用:

    • 修饰局部变量:
      1. 延长局部变量的生命周期,程序结束才会销毁。
      2. 局部变量只会生成一份内存,只会初始化一次。
      3. 改变局部变量的作用域。
    • 修饰全局变量:
      1. 只能在本文件中访问,修改全局变量的作用域,生命周期不会改
      2. 避免重复定义全局变量
  • extern作用:

    • 只是用来获取全局变量(包括全局静态变量)的值,不能用于定义变量
    • extern工作原理:先在当前文件查找有没有全局变量,没有找到,才会去其他文件查找。
  • static与const联合使用:

    • static与const作用:声明一个只读的静态变量
    • 开发使用场景:在一个文件中经常使用的字符串常量,可以使用static与const组合
    • staic和const联合的作用:声明一个静态的全局只读常量

addChildViewController用法 (作用)

  • 苹果新的API增加了addChildViewController方法,并且希望我们在使用addSubview时,同时调用[self addChildViewController:child]方法将sub view对应的viewController也加到当前ViewController的管理中。
  • 对于那些当前暂时不需要显示的subview,只通过addChildViewControllersubViewController加进去;需要显示时再调用transitionFromViewController方法。将其添加进入底层的ViewController中。
  • 这样做的好处:
    1. 无疑,对页面中的逻辑更加分明了。相应的View对应相应的ViewController。
    2. 当某个子View没有显示时,将不会被Load,减少了内存的使用。
    3. 当内存紧张时,没有Load的View将被首先释放,优化了程序的内存释放机制。


      面试整理_第1张图片
      addChildViewController.png

如何定义一个对外只读对内可读写的属性?

在头文件中将属性定义为readonly, 在.m文件中将属性重新定义为readwrite

给button addtarget两次会怎么样?

一个 button 添加两次 addtarget 执行方法,最后方法执行一次;

nsarray经过mutablecopy生成新的数组,新数组里的元素和之前数组里的元素一样吗?

一样;

  • [immutableObject copy]是浅拷贝
  • [immutableObject mutableCopy]是深拷贝
  • [mutableObject copy]是深拷贝
  • [mutableObject mutableCopy]是深拷贝

注意事项:
集合对象的深拷贝只是对象本身,而集合对象的元素还是地址的拷贝,即单层深拷贝:

你可能感兴趣的:(面试整理)