面试问答题
1、 说一下OC的垃圾回收机制?
2、 方法和选择器有何不同?
3、 什么是延迟加载?
4、 一个tableView是否可以关联两个不同的数据源?你会怎么处理?
5、 什么时候需要在程序中创建内存池?
6、 如果我们不创建内存池,是否有内存池提供给我们?
参考答案
1、 OC2.0有Garbage collection,但是iOS平台不提供。一般我们了解的objective-c对于内存管理都是手动操作的,但是也有自动释放池。但是差了大部分资料,貌似不要和arc机制搞混就好了。
2、 selector是一个方法的名字,method是一个组合体,包含了名字和实现。详情可以看apple文档。
3、 即懒汉模式,只在用到的时候才去初始化。也可以理解成延时加载。
我觉得最好也最简单的一个列子就是tableView中图片的加载显示了。一个延时载,避免内存过高,一个异步加载,避免线程堵塞。
4、首先我们从代码来看,数据源如何关联上的,其实是在数据源关联的代理方法里实现的。
因此我们并不关心如何去关联他,他怎么关联上,方法只是让我返回根据自己的需要去设置如相关的数据源。
5、用户自己创建的数据线程,则需要创建该线程的内存池
6、界面线程维护着自己的内存池,用户自己创建的数据线程,则需要创建该线程的内存池。