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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!