以下是围绕 "iOS 开发核心知识点全解析(面试必备)" 展开的结构化内容,涵盖面试高频考点、核心技术模块及重点解析,适配面试复习、知识梳理场景:
一、基础语法与 Runtime
- OC 与 Swift 核心特性
- OC:消息机制(
objc_msgSend)、分类(Category)与扩展(Extension)区别、@property属性关键字(strong/weak/copy/assign)、MRC 与 ARC 内存管理原则(引用计数、AutoreleasePool)。 - Swift:值类型与引用类型、可选值(Optional)、闭包(Closure)捕获机制、协议扩展(Protocol Extension)、泛型(Generic)、Actor 并发模型。
- OC:消息机制(
- Runtime 底层原理
- 类结构(
isa指针、objc_class结构体)、方法缓存(cache_t)、消息转发流程(动态解析→备用接收者→完整转发)、关联对象(Associated Object)、Method Swizzling 黑魔法。
- 类结构(
二、UIKit 与界面开发
- UI 组件与布局
- UIView 生命周期(
init→layoutSubviews→drawRect→dealloc)、AutoLayout 约束原理(VFL 语法、优先级冲突解决)、Frame 与 AutoLayout 混合使用坑点。 - 常用组件:UITableView/UICollectionView 复用机制、UICollectionViewCompositionalLayout 进阶布局、UIScrollView 嵌套滑动处理。
- UIView 生命周期(
- 响应链与事件传递
- 事件传递流程(
hitTest:withEvent:→pointInside:)、手势识别器(UIGestureRecognizer)冲突处理、UIResponder 响应链机制。
- 事件传递流程(
- 界面渲染原理
- 离屏渲染(Offscreen Rendering)触发场景(圆角 + 阴影 + mask、UIBlurEffect 等)及优化方案、CALayer 与 UIView 关系、Core Animation 动画流程(
CATransaction)。
- 离屏渲染(Offscreen Rendering)触发场景(圆角 + 阴影 + mask、UIBlurEffect 等)及优化方案、CALayer 与 UIView 关系、Core Animation 动画流程(
三、内存管理与性能优化
- 内存管理深度解析
- ARC 底层实现(编译器 + Runtime 协作)、循环引用场景(NSTimer/Block/Delegate)及解决方案(
weakSelf/strongSelf、__block修饰符)、内存泄漏检测工具(Instruments-Leaks)。
- ARC 底层实现(编译器 + Runtime 协作)、循环引用场景(NSTimer/Block/Delegate)及解决方案(
- 性能优化维度
- 启动优化:冷启动 / 热启动流程、二进制重排(Binary Reordering)、启动时间监控(
os_signpost)。 - 卡顿优化:RunLoop 卡顿监控、主线程耗时操作异步化、图片解码优化(
ImageIO)、TableView 流畅性优化(预估高度、异步加载)。 - 包体积优化:资源压缩(图片 / WebP)、代码裁剪(LinkMap 分析)、按需加载(动态库 / 插件化)。
- 启动优化:冷启动 / 热启动流程、二进制重排(Binary Reordering)、启动时间监控(
四、多线程与并发编程
- 多线程方案对比
- pthread/NSThread(底层线程)、GCD 核心概念(队列类型、同步 / 异步函数、栅栏函数
dispatch_barrier、信号量dispatch_semaphore)、NSOperation/NSOperationQueue(依赖管理、优先级)。
- pthread/NSThread(底层线程)、GCD 核心概念(队列类型、同步 / 异步函数、栅栏函数
- 线程安全与同步
- 互斥锁(
@synchronized、NSLock)、自旋锁(OSSpinLock已废弃→os_unfair_lock)、读写锁(pthread_rwlock_t)、原子属性局限性。
- 互斥锁(
- Swift 并发模型
- async/await 异步编程、Task/TaskGroup 任务管理、Actor 隔离机制、Sendable 协议与数据安全传递。
五、网络与数据持久化
- 网络编程核心
- HTTP/HTTPS 协议基础(请求方法、状态码、HTTPS 握手流程)、网络框架对比(AFNetworking/Alamofire 核心原理、NSURLSession 底层)、断点续传实现(Range 请求 + 临时文件)、网络缓存策略(NSURLCache / 自定义缓存)。
- 数据持久化方案
- UserDefaults(轻量级存储局限)、plist 文件、SQLite/FMDB(SQL 语句优化)、CoreData(托管对象上下文 NSManagedObjectContext、数据模型设计)、Realm(跨平台 ORM 框架)。
六、架构设计与设计模式
- 经典架构模式
- MVC/MVP/MVVM 区别与适用场景、Clean Architecture(分层架构)、响应式编程(RxSwift/Combine 核心思想)。
- 设计模式实战
- 单例模式(线程安全实现)、工厂模式、代理模式(Delegate)、观察者模式(Notification/KVO)、享元模式(UITableViewCell 复用)、策略模式。
七、跨平台与进阶技术
- 跨平台方案
- Flutter 与 iOS 原生交互(MethodChannel)、React Native 桥接原理、SwiftUI 与 UIKit 互操作(UIHostingController/UIViewRepresentable)。
- 其他高频考点
- 推送机制(APNs 原理、本地推送 / 远程推送实现)、App 签名与权限(entitlements、Provisioning Profile)、模块化与组件化(URL Scheme/Protocol/CTMediator)、逆向与安全(代码混淆、防越狱检测)。
八、面试高频问答示例
- Q:简述 RunLoop 工作原理及应用场景?
- A:RunLoop 通过循环监听事件(输入源 / 定时器)维持线程存活,核心模式(Default/Common/UIEventTracking),应用:TableView 滑动时避免定时器暂停、卡顿监控、常驻线程实现。
- Q:Category 能否添加属性?为什么?如何解决?
- A:Category 不能直接添加实例变量(
objc_class结构体内存布局固定),可通过 Runtime 关联对象(objc_setAssociatedObject/objc_getAssociatedObject)间接实现属性效果。
- A:Category 不能直接添加实例变量(
- Q:MVVM 相比 MVC 的优势?Combine 如何简化 MVVM 数据流?
- A:MVVM 分离视图与业务逻辑(ViewModel 解耦),Combine 通过 Publisher/Subscriber 实现数据绑定,自动响应数据变化,减少代理 / 通知代码冗余。