1.怎么解決緩存池慢的情況
iOS不存在緩存池慢的情況侠讯,因為通常我們iOS開發(fā)中,對象都是在需要的時候才會創(chuàng)建嗡载,有種常用的做法叫做懶加載惩琉,還有在UITableView中一半只會創(chuàng)建剛開始出現(xiàn)在屏幕中的cell,之后都是從緩存池里取拖吼,不會創(chuàng)建新對象鳞上,緩存池里最多也就一兩個對象,緩存池滿的情況一半在開發(fā)Java中比較常見吊档,Java中一般吧最近最少使用的對象先釋放篙议。
2.CAAnimation的層級結(jié)構(gòu)
CAPropertyAnimation: 屬性動畫,是一個基類,一般使用它的兩個子類:CABasicAnimation和CAKeyframeAnimation.主要作用于CALayer的屬性,使其產(chǎn)生動畫效果.
3.UIButton與UITableView的層級結(jié)構(gòu)
- 繼承結(jié)構(gòu)
UIButton -> UIControl -> UIView -> UIResponder -> NSObject
UITableView -> UIScrollView -> UIView -> UIResponder -> NSObject
- 內(nèi)部子控件結(jié)構(gòu)
UIButton內(nèi)部子控件結(jié)構(gòu): 默認有兩個, 一個UIImageView, 一個UILable, 分別可以設(shè)置圖片和文字, button設(shè)置屬性基本都是set方法
UITableView內(nèi)部子控件結(jié)構(gòu): UITableView中每一行數(shù)據(jù)都是UITableViewCell, UITableViewCell內(nèi)部有一個UIView控件 (contentView, 作為其它元素的父控件) , 兩個UILable 控件 (textLable, detailTextLable) , 一個UIImageView控件 (imageView) , 分別用于容器, 顯示內(nèi)容, 詳情和圖片
4.如何渲染自定義格式字符串的UILable
- 通過NSAttributeString類
NSMutableAttributedString *str = [[NSMutableAttributedString alloc] initWithString:@"你好"];
//設(shè)置文字顏色
[str addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(0,1)];
//設(shè)置字體
[str addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:10] range:NSMakeRange(1, 2)];
}
5.設(shè)置scrollView的contentSize能在viewDidLoad里設(shè)置嗎?為什么怠硼?
- 能
- 當時鬼贱,view剛剛創(chuàng)建,尺寸未確定
6.按鈕或其他UIView控件的事件傳遞的具體過程
史上最詳細的iOS之事件的傳遞和響應(yīng)機制-原理篇
7.控制器view的聲明周期及相關(guān)函數(shù)是什么香璃?你在開發(fā)中是如何利用的这难?
- 1.首先判斷控制器是否有視圖,如果沒有就調(diào)用LoadView方法創(chuàng)建:通過stroyboard或者代碼
- 2.隨后調(diào)用viewDidLoad葡秒,可以進行下一步的初始化操作:只會被調(diào)用一次
- 3.在視圖顯示之前調(diào)用viewWillAppear:該函數(shù)可以多次調(diào)用
- 4.視圖顯示之前調(diào)用viewWillDisappear:處理保存當前視圖的一些信息(如需要)
- 5.在布局變化前后姻乓,調(diào)用viewWillDidLayoutSubviews處理相關(guān)信息