对您有帮助或者您喜欢的话 但愿能点个赞或者添加一下关注面试
一. 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中,一个类继承另外一个类,就是继承了父类全部的属性和方法,而且能够扩充本身的属性:而类别是在不改变原有类的基础上进行方法扩充;
所以,根据开发需求,若是这个类须要扩充属性,或者须要重写系统的类的某些方法,用继承;若是只是对一个类扩充接口和模块,使用类别更加方便.服务器
五. 简述苹果的安全机制
数字签名机制:在iOS中运行的App必须 拥有本身的数字签名,而数字签名来与开发者的数字证书;开发者须要加入"iOS开发者计划"才能获取证书 并且其开发的App还要通过严格的审查才能在AppStore上架,保证了App的安全;杜绝了第三方和未签名App的运行;
沙盒保护机制:这种机制使得设备内的各个App之间没法直接进行交流,只能经过iOS来进行数据传递;虽然下降了系统的扩展性可是却保证了安全性;
不要使用越狱,不然苹果的安全机制就功亏一篑;
只从AppStore获取App;
第一次链接计算机,不要随意点"信任";
不要随意给某个App设置隐私读取权限;
六 关键字const有什么含意?修饰类呢?static的做用,用于类呢?还有extern c的做用?
当使用 const修饰基数数据类型变量时,该变量就变为常量,进入静态区多线程
当使用const修饰指针类型变量时:app
当使用const在指针类型两边,那么该指针变量指向的内存空间的内容就不能改变了,但指针的指向能够改变.
若是const在变量的左边,那么该指针的指向不能改变了,而指向内存空间的内容能够改变异步
当使用const修饰符时,const NSSting *str,至关于修饰该对象,表示对象是不可更改的.函数
static修饰变量,表示这个内部全局变量,只能在本文件中访问.系统会将该变量放进静态区,它的生命周期被延长到了程序结束学习
static修饰类, 表示这个内部的方法, 只能在本文件中访问.线程
extern c表示声明了一外部变量, 多个外部变量若是同名,实际指向的是同一块存储空间.
七. 类工厂方法是什么?
类工厂方法的实现是为了向客户提供方便,它们将分配和初始化合在一个步骤中,返回被建立的对象,并进行自动释放处理.这些方法的形式是+(type)className..其中className不包括任何前缀. 工厂方法可能不只仅为了方便使用,它们不但能够将分配和初始化合在一块儿,还能够为初始化过程提供对象的分配信息.类工厂方法的另外一个目的是使类提供单间实例.
八 UIView从出现到销毁的过程?
-> loadView
-> viewDidLoad
-> viewWillAppear
-> viewWillLayoutSubviews
-> viewDidLayoutSubviews
-> viewDidAppear
-> viewWillDisappear
-> viewDidDisappear
九. 什么状况下回发生内存泄漏和内存溢出?
内存溢出就是你要求分配的内存超出了系统能给你的,系统不能知足需求,因而就产生溢出.
内存泄漏就是指你向系统申请分配内存进行使用,能够说使用完后没有惊喜释放,结果这块内存也没法分配给其余程序,称之为内存泄漏
内存泄漏的累计危害很是大 最后会致使内存溢出 程序闪退;
内存泄漏分为四大类;
常发生内存泄漏:发生内存泄漏的代码会被屡次执行到,每次被执行的时候都会致使一块内存泄漏.
偶发生内存泄漏.发生内存泄漏的代码只有在某些特定的坏境或者操做过程下才会发生;
一次性内存泄漏.发生内存泄漏的代码只会被执行一次,或者因为算法上的缺陷,致使总会有一块仅且一块内存发生泄漏;
隐式内存泄漏 程序在运行的过程当中不停的分配内存, 可是直到结束的时候才释放内存,对于运行周期很长的服务器,不及时释放会耗尽内存;
十 说说响应者链条?
响应者链条是一条由UIResponder的子类组成的链条,它们都可以响应时间,由事件的最佳相应者起,若是它是控制器的view的话,它的上一级响应者就是这个控制器,不然就是它的父控件;控制器的上一级响应者是它父控制器的view,最终一直到window.
纯手打 有错误或者不对的地方但愿你们能给指出
喜欢的小伙伴但愿能给个赞 或者添加个关注
交流圈子:
做为一个开发者,有一个学习的氛围跟一个交流圈子特别重要,这是一个个人iOS交流群:1001906160 ,密码‘000‘’提供一个更大的平台,无论你是小白仍是大牛欢迎入驻 ,分享BAT,阿里面试题、面试经验,讨论技术, 你们一块儿交流学习成长!