iOS 面试题
Posted developer-qin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS 面试题相关的知识,希望对你有一定的参考价值。
1、CALayer有哪些子类?用途?
2、有哪些常见的 Crash 场景?
3、@protocol 和 category 中如何使用 @property
4、什么是 method swizzling?
5、如何让自己的类用 copy 修饰符?如何重写带 copy 关键字的 setter?
6、ios签名机制大概是怎样的?
答案:
1、CALayer有哪些子类?用途?
CAShaperLayer
CAGradientLayer: 颜色过渡
CAEmitteryLayer :粒子效果
CATransformLayer:给图层加景深效果,构造一个层级分明的3D结构。
CAReplicatorLayer:图层复制
CAScrollLayer
CATiledLayer:为节省内存渲染开销提供了途径
CATextLayer:
CAEAGLLayer:
AVPlayerLayer: 播放视频
2、有哪些常见的 Crash 场景?
数组越界
访问了僵尸对象。已经被释放掉的对象
访问野指针. EXC_BAD_ACCESS.
访问了不存在的方法. unrecognized selector
多线程并发操作
在定时器下一次回调前将定时器释放
3、@protocol 和 category 中如何使用 @property
objc_setAssociatedObject/ objc_setAssociatedObject
4、什么是 method swizzling?
简单说就是进行方法交换
在Objective-C中调用一个方法,其实是向一个对象发送消息,查找消息的唯一依据是selector的名字。利用Objective-C的动态特性,可以实现在运行时偷换selector对应的方法实现,达到给方法挂钩的目的
每个类都有一个方法列表,存放着方法的名字和方法实现的映射关系,selector的本质其实就是方法名,IMP有点类似函数指针,指向具体的Method实现,通过selector就可以找到对应的IMP。
selector --> 对应的IMP
交换方法的几种实现方式
利用 method_exchangeImplementations 交换两个方法的实现
利用 class_replaceMethod 替换方法的实现
利用 method_setImplementation 来直接设置某个方法的IMP。
5、如何让自己的类用 copy 修饰符?如何重写带 copy 关键字的 setter?
6、iOS签名机制大概是怎样的?
5、如何让自己的类用 copy 修饰符?如何重写带 copy 关键字的 setter?
若想令自己所写的对象具有拷贝功能,则需实现NSCopying协议。如果自定义的对象分为可变版本与不可变版本,那么就要同时实现NSCopyiog与NSMutableCopying协议。
6、
https://www.jianshu.com/p/ad29445eb91c
以上是关于iOS 面试题的主要内容,如果未能解决你的问题,请参考以下文章