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、有些图片加载比较慢怎么处理?你是怎么优化程序的性能的?
①、图片下载放在异步线程。
②、图片下载过程使用占位图片。
③、如果图片比较大,可以使用多线程断点下载。