iOS面试题锦集(五)——UI控件

1. 怎么解决缓存池慢的问题?

  • iOS中不存在缓存池慢的情况,因为通常我们在iOS开发中,对象都是在需要的时候才会创建,有种常用的说话叫做“懒加载”;
  • 还有在UITableView中一般只会创建刚开始出现在屏幕中的cell,之后都是从缓存池里取,不会在创建新的对象。
  • 缓存池里最多也就一两个对象,缓存池慢的情况一般在JAVA开发中比较常见,JAVA中一般把最近最少使用的对象先释放。

2. CAAnimation的层级结构

iOS面试题锦集(五)——UI控件_第1张图片
CAAnimation.png

3. UIButton与UITableView的层级结构

  • 继承结构
  • 内部的子控件结构

4. 如何渲染自定义格式字符串的UILabel?

  • 通过NSAttributedString

5. 设置scroll view 的contensize能在ViewDidLoad里设置吗,为什么?

  • ViewDidLoad里做初始化的工作不影响设置scroll view 的contensize

6. 按钮或者其它UIView控件的事件传递的具体过程

  • 事件响应链知识点,一级一级传递

7. 控制器View的生命周期及相关函数是什么?你在开发中是如何用的?

  • 首先判断是否有视图,如果没有就调用loadView方法创建:通过storyboard或者代码;
  • 随后调用viewDidLoad,可以进行下一步的初始化操作,只会被调用一次;
  • 在视图显示之前调用viewWillAppear,该函数可以多次调用;
  • 视图viewDidAppear
  • 下一个视图显示之前,调用上一个视图的viewWillDisappear,该函数可以多次调用(若需要);
  • viewDidDisappear
  • 再布局变化前后,调用viewWill/DidLayoutSubviews处理相关信息。

你可能感兴趣的:(iOS面试题锦集(五)——UI控件)