background image
上海育创 iOS 经典面试题(三) 
 
. CALayer 和 UIView 的区别联系 
(1)UIView 是 UIKIt 的只能在 iOS 使用, CALayer 是 QuartzCore 的  iOS 和 mac os 通用 
(2)CALayer 比 UIView 更加轻量级,但是可以实现同样的效果 
(3)UIView 的 CALayer 类似 UIView 的子 View 树形结构 
(4)UIView 比 CALayer 多了一个事件处理功能,也就是说 UIView 能处理用户触摸 
(5)UIView 有个重要的属性 layer,可以返回它的主 CALayer 实例.CALayer  *layer  = 
myView.layer 
(6)坐标系统: CALayer 的坐标系统比 UIView 多了一个 anchorPoint 属性 
(7)UIView 是 iOS 系统中界面的基本元素,所有的界面元素都是继承自它.它本身完全是由
CoreAnimation 来实现的.它真正的绘图部分,是由一个 CALayer 类来管理的.UIView 本身更像
是一个 CALayer 的管理权,访问它的跟绘图和跟坐标有关的属性,如 frame,bounds 等,实际上内
部都是在访问它所包含的 CALayer 的相关属性. 
layer 可以设置圆角显示  cornerRadius  也可以设置阴影  shadowColor  但是如果 layer
中某个
layer 设置了圆角 
中所有 layer 的阴影效果将都不显示.因此要死设置有圆角还要阴影,可以
做两个 UIView 重叠,一个 layer 显示圆角一个 layer 显示阴影 
(8)渲染:当更新层  改变不能立即显示在屏幕上.当所有的层都准备好时,可以调用
setNeedsDisplay 方法来重绘显示. 
(9)变换:要在一个层中添加一个 3D 或仿射变换,可以分别设置层的 transform 或者
affineTransform 属性 
(10)变形:Quartz  Core 的渲染能力  使二维图像可以被自由的操纵,就像是三维的.图像可
以在一个三维坐标系中以任意的角度被旋转  缩放  和倾斜.CATransform3D 的一套方法提供
了一些魔术般的效果。 
 
.  简述同步和异步 
同步:串行的执行任务  异步:并行的执行任务.同步函数不具备开启线程的能力,而异步函数
具备 
所谓同步,就是在发出一个调用时,在没有得到结果之前,该调用就不返回.但是一旦调用返回,
就得到返回值了.也就是  由调用者主动等待这个调用结果 
而异步则是相反,调用在发出之后,这个调用就直接返回了,所以没有返回结果.换句话说就是
当一个 
 
.  多线程安全怎么控制
用互斥锁,队列组,栅栏函数,依赖 
 
.  简要说明什么时候使用继承,什么时候使用类别 
在 OC 中,一个类继承另一个类,就是继承了父类所有的属性和方法,并且可以扩充自己的属性:
而类别是在不改变原有类的基础上进行方法扩充; 
因此,根据开发需求,如果这个类需要扩充属性,或者需要重写系统的类的某些方法,用继承;如
果只是对一个类扩充接口和模块,使用类别更加方便. 
 
.  简述苹果的安全机制 
(1)数字签名机制:在 iOS 中运行的 App 必须拥有自己的数字签名,而数字签名来与开发