iOS面试题锦集(五)——UI控件
2016-09-06 本文已影响332人
KyneChen
1. 怎么解决缓存池慢的问题?
- iOS中不存在缓存池慢的情况,因为通常我们在iOS开发中,对象都是在需要的时候才会创建,有种常用的说话叫做“懒加载”;
- 还有在UITableView中一般只会创建刚开始出现在屏幕中的cell,之后都是从缓存池里取,不会在创建新的对象。
- 缓存池里最多也就一两个对象,缓存池慢的情况一般在JAVA开发中比较常见,JAVA中一般把最近最少使用的对象先释放。
2. CAAnimation的层级结构
CAAnimation.png3. 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
处理相关信息。