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 面试题的主要内容,如果未能解决你的问题,请参考以下文章

我的iOS面试经历(附面试题干货)

iOS面试题都有哪些

iOS开发面试题:堆和栈的区别

整理出一份高级iOS面试题

IOS面试题(多线程) --- 锁

iOS面试题