关于面试中的一二 ------------Foundation 持续更新
来源:互联网 发布:淘宝开店模版免费模版 编辑:程序博客网 时间:2024/05/04 21:39
1. KVO内部实现原理
1> KVO是基于runtime机制实现的
2> 当某个类的对象第一次被观察时, 系统就会在运行期动态地创建该类的一个派生类,在这个派生类中重写基类中任何被观察属性的 setter 方法。
派生类在被重写的 setter 方法实现真正的通知机制(Personà NSKVONotifying_Person)
2. 是否可以把比较耗时的操作放在NSNotificationCenter中
如果在异步线程发的通知,那么可以执行比较耗时的操作;
如果在主线程发的通知,那么就不可以执行比较耗时的操作
3.Foundation对象与Core Foundation对象有什么区别
1> Foundation对象是OC的,Core Foundation对象是C对象
2> 数据类型之间的转换
l ARC:__bridge_retained、__bridge_transfer
l 非ARC: __bridge
4.不用中间变量,用两种方法交换A和B的值
A = A + B
B = A - B
A = A - B
或者
A = A^B;
B = A^B;
A = A^B;
5.简单描述下对单利模式设计的理解?
节省内存资源,一个应用就一个对象。
6.什么是动态,举例说明
1> 在程序运行过程才执行的操作
7.runtime实现的机制是什么,怎么用,一般用于干嘛.你还能记得你所使用的相关的头文件或者某些方法的名称吗?
运行时机制,runtime库里面包含了跟类、成员变量、方法相关的API,比如获取类里面的所有成员变量,为类动态添加成员变量,动态改变类的方法实现,为类动态添加新的方法等需要导入<objc/message.h><objc/runtime.h>
1> runtime,运行时机制,它是一套C语言库
2> 实际上我们编写的所有OC代码,最终都是转成了runtime库的东西,比如类转成了runtime库里面的结构体等数据类型,方法转成了runtime库里面的C语言函数,平时调方法都是转成了objc_msgSend函数(所以说OC有个消息发送机制)
3> 因此,可以说runtime是OC的底层实现,是OC的幕后执行者
4> 有了runtime库,能做什么事情呢?runtime库里面包含了跟类、成员变量、方法相关的API,比如获取类里面的所有成员变量,为类动态添加成员变量,动态改变类的方法实现,为类动态添加新的方法等
5> 因此,有了runtime,想怎么改就怎么改
8.是否使用Core Text或者Core Image等?如果使用过,请谈谈你使用CoreText或者Core Image的体验。
CoreText
• 随意修改文本的样式
• 图文混排(纯C语言)
• 国外:Niumb
Core Image(滤镜处理)
* 能调节图片的各种属性(对比度, 色温, 色差等)
9.NSNotification和KVO的区别和用法是什么?什么时候应该使用通知,什么时候应该使用KVO,它们的实现上有什么区别吗?如果用protocol和delegate(或者delegate的Array)来实现类似的功能可能吗?如果可能,会有什么潜在的问题?如果不能,为什么?(虽然protocol和delegate这种东西面试已经面烂了…)
通知比较灵活(1个通知能被多个对象接收, 1个对象能接收多个通知),
代理比较规范,但是代码多(默认是1对1)
KVO性能不好(底层会动态产生新的类),只能监听某个对象属性的改变, 不推荐使用(1个对象的属性能被多个对象监听, 1个对象能监听多个对象的其他属性)
更详细参考:
http://blog.csdn.net/dqjyong/article/details/7685933
10.Block内部的实现原理
Objective-C是对C语言的扩展,block的实现是基于指针和函数指针
11. 有两个数组a,b,大小都为n,数组元素的值任意,无序;
要求:通过交换a,b中的元素,使数组a元素的和与数组b元素的和之间的差最小
算法题,要么靠功底,要么百度
- 关于面试中的一二 ------------Foundation 持续更新
- 关于面试中的一二 ------------应用程序 持续更新
- 关于面试中的一二 ------------多线程篇 持续更新
- 关于面试中的一二 ------------内存管理 持续更新
- 关于面试中的一二 ------------数据存储 持续更新
- 关于面试中的一二 ------------UI控件 持续更新
- 关于eclipse中的快捷键(持续更新中...)
- 面试体会---持续更新
- 面试中关于二叉树的常见习题(持续更新)
- 面试中的高频特色算法题(持续更新中)
- 关于maven(持续更新)
- Java面试(持续更新......)
- 数据库面试(持续更新)
- 面试总结理论,持续更新
- 面试知识点小结-持续更新
- <持续更新中>面试准备
- 关于网页设计中的一些有趣网站--(持续更新)
- 关于素数(持续更新)
- makefile 的ifeq和ifdef的区别
- vector的初始化和遍历
- 图像、画布大小
- 深入剖析Java中的装箱和拆箱
- JavaScript核心语法————数据类型转化、运算符、表达式
- 关于面试中的一二 ------------Foundation 持续更新
- PHP对数组的某个字段排序方法
- Android中的Serializable和Parcelable序列化
- 微信jssdk总结
- ClientDataSet 分组统计
- Android -- Wifi连接流程分析
- 网线直连传输大文件
- css实现滚动条效果
- 【cas】cas获取登录的用户名