iOS面试题-第九页

81.Foundation对象与Core Foundation对象有何区别?Foundation对象是OC的,Core Foundation对象是C对象。数据类型之间的转换:ARC:_bridge_retained、_bridge_transfer非ARC:_bridge 82、不用第三变量,交换AB的值。A=A+BB=A-BA=A-B或者A=A^BB=A^BA=A^B 83.简单描述下对单例模式设计的理解?节省内存资源,一个应用就一个对象。 84.runtime实现的机制是什么?怎么用,一般用于干嘛。运行时机制,runtime库里面包含了跟类、成员变量、方法相关的API,比如获取类里面的所有成员变量,为类动态添加成员变量、动态改变类的方法实现,为类动态添加新的方法等,需要导入①.runtime,运行时机制,它是一套C语言库。

②.实际上我们编写的所有OC代码,最终都是转换成为了runtime库的东西,比如类转换成了runtime库里面的结构体等数据类型,方法转换成了runtime库里面的C语言函数,平时调方法都是转成了objc_msgSend函数(所以说OC有个消息发送机制)

③、因此,可以说runtime是OC的底层实现,是OC的幕后执行者。

④、有了runtime库,能做什么呢?可以获取类里面的所有成员变量、为类动态的添加成员变量、动态的改变类的方法实现、为类动态添加新的方法等等。

85.是否使用Core Text 或者 Core Image ?

Core Text

随意修改文本的样式

图文混排(纯C语言)

Core Image(滤镜处理)

能够调节图片的各种属性(对比度、色温、色差等)

86、NSNotification和KVO的区别和用法是什么?什么时候应该使用通知,什么时候应该使用KVO,他们的实现有何区别?如果用protocol和delegate来实现类似的功能可能吗?可能的话有何问题?不可能的话why?

通知比较灵活,一个通知能被多个对象接受,一个对象可以接受多个通知。

代理不交规范,但是代码较多(默认是一对一)

KVO性能不好(底层会产生新的类),只能监听某个对象属性的变化,不推荐使用。

87、block内部的实现原理。

Objective-C是对C语言的扩展,block的实现是基于指针和函数指针。

88、怎么解决缓存池满的问题?

iOS中不存在缓存池满的情况,通常在对象需要创建时才创建,比如UITableView中一般只会创建刚开始在屏幕中的cell,之后都是从缓存池里取,不会再创建新对象。

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

1、首先判断控制器是否有视图,如果没有就调用loadView方法创建:通过storyBoard或者代码。

2、随后调用viewDidLoad,可以进行下一步的初始化操作,只会被调用一次。

3、在视图显示之前调用viewWillAppear,该函数可以多次调用。

4、视图viewDidAppear

5、在布局变化前后,调用viewWill/DidLayoutSubViews处理相关信息。

90、有些图片加载比较慢怎么处理?你是怎么优化程序的性能的?

①、图片下载放在异步线程。

②、图片下载过程使用占位图片。

③、如果图片比较大,可以使用多线程断点下载。

你可能感兴趣的:(iOS面试题-第九页)