background image
北风网 iOS 面试题库(五) 
 
写在前面:
“分享”看似在输出,但实际上是获得更多。用我们北风网的口号就是“不懂得分
享的人,不会很快乐;不懂得分享的机构,不是好机构
”。所以,我们北风网不定期会给大
家分享一些干货,所有的内容仅供学习之用,也希望大家能将
“分享的精神”传递下去。 
 
一、  用一个属性引用 UI 控件的时候为什么可以用 weak? 
controller  是被系统用强指针引用者,只要它存在,那么里面的子控件也就存在,controller
强引用着它的 view controller,又强引用着它的数组对象 subviews,数组对象又强引用着
它所包含的数组内容,那么创建出来的一个 UI 控件将其加入 subviews 的时候,那么就会
被一个强指针所引着它 
对于内存的合理使用,当我们需要控件的时候就已经有一个强引用在引用着它,我们就不必
再弄一个强指针来强引用它;当我们不需要的时候,weak 直接释放掉,用 strong 的话就
还会保留它,这就占着内存了. 
 
二、  UITableView  性能优化的原理 
iOS 设备内存有限,如果使用 UITableView 显示非常多的数据,就需要非常多的 UI 
TableViewcell 
那么设备的内存就会耗尽,解决该问题就需重用  UITableView  对象。 
当滚动出列表的时候,部分 UITableViewCell  会移出窗口,UITableView 会将窗口外的
UITableVIewcell  放入一个对象缓存池中; 
当 UITableView  要求 dataSource  返回 UITableView 时,  dataSource  会先查看缓存池
中是否有未使用的 UITableViewCell  ,有就用新的数据配置这个 UITableViewCell  重新使
用到窗口,这就避免了重新创建对象。 
 
三、什么是抽象类?有什么作用?能实例化吗? 
1、抽象类:abstract 修饰,它只能用来作父类,本身并没有生成实例的能力 
它将一类最公有的属性和方法抽取出来抽象类是将类共有的方法抽取出来,声明为抽象方法, 
抽象方法只有声明没有具体的实现,  拥有抽象方法的类就是抽象类;  这样新增一种类型时候
只需要继承抽象类,实现抽象方法就可以了,降低了实现新类的难度。 
抽象方法修饰符  abstract  抽象类不能被实现 
如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类 
2、抽象类作用: 
(1)用于类型隐藏在面向对象领域,抽象类主要用来进行类型隐藏。我们可以构造出一个