先认清你的能力缺口在哪
很多写了好几年 iOS 的人,业务代码写得飞起,但遇到线上莫名的野指针崩溃、内存泄漏或者多线程死锁,往往只能靠瞎猜。这门课解决的就是这种“知其然而不知其所以然”的问题。它不教你怎么画界面、怎么调网络库,而是专门针对 Objective-C 底层语法里的雷区进行排雷。如果你平时用 Swift 居多,但接手了老项目,或者面试时总被问到 @property 背后到底发生了什么、强弱引用在 RunLoop 里的释放时机,那这就是你的必修课。它适合有一定编码量、能独立写功能但底子薄的开发者,纯零基础不建议看,你得先知道怎么声明一个类和调用方法,否则会听得很吃力。
建议先看哪几块以及怎么配合资料练
拿到资料后,别从头到尾当连续剧看。建议先直奔属性修饰符和内存管理这两块。看 @property 那几节时,不要光听,必须打开 Xcode 建个空的 macOS 命令行工程,把 strong、weak、copy、assign 全部敲一遍,用打印或者断点看底层生成的 getter 和 setter 到底差在哪。讲到自动释放池和引用计数时,重点去写一段故意制造循环引用的代码,然后自己动手加 @autoreleasepool 去验证对象到底什么时候被回收。资料包里的代码片段是用来对照的,不要复制粘贴,一定要自己手敲,敲错的那几个字符往往就是你认知里的盲区。遇到原子性修饰符那节,自己开几个子线程去并发读写属性,比干看视频有用得多。
看完应能独立回答和解决的问题
学完这门课,你不一定能立刻撸出什么牛逼架构,但应该能独立回答几个硬核问题:修饰符在底层是怎么影响成员变量生成的?copy 修饰符在传入不可变对象和可变对象时到底发生了几次内存拷贝?自动释放池什么时候 push 什么时候 pop,和 RunLoop 的关系是什么?在实际工作中,你应该能拿到一段祖传代码,一眼看出哪里有潜在的内存泄漏,哪里因为修饰符用错会导致多线程下的崩溃。面试时如果被问到对象在什么情况下会进入自动释放池,你能结合底层机制把前因后果讲清楚,而不是背两句概念敷衍。缺什么补什么,把这些语法底层的坑填平了,再去搞组件化或者性能优化才不会觉得虚。
课程目录
1-1 [Objective-C篇] 开篇 (03:37) 1-2 [Objective-C篇] @property做了什么 (15:10) 1-3 [Objective-C篇] 属性修饰符 (03:49) 1-4 [Objective-C篇] Setter语义类修饰符 (07:58) 1-5 [Objective-C篇] 访问器名称类修饰符 (03:17) 1-6 [Objective-C篇] 可写性类修饰符 (02:32) 1-7 [Objective-C篇] 原子性修饰符 (05:20) 1-8 [Objective-C篇] 为空性修饰符 (06:30) 1-9 [Objective-C篇] 引用计数技术 (08:18) 1-10 [Objective-C篇] 自动引用计数初步 (13:15) 1-11 [Objective-C篇] 自动释放池 (13:53) 1-12 [Objective-C篇] Block的3种类型 (12:55) 1-13 [Objective-C篇] Block中变量的捕获 (14:11) 1-14 [Objective-C篇] __block关键字 (06:26) 1-15 [Objective-C篇] RunLoop与线程的关系 (15:07) 1-16 [Objective-C篇] RunLoop的运行机制 (16:41) 1-17 [Objective-C篇] RunLoop的模式 (08:53) 1-18 [Objective-C篇] OC中消息的发送 (07:36) 1-19 [Objective-C篇] 消息传递的过程 (22:37) 1-20 [Objective-C篇] 关于super关键字 (12:06) 1-21 [Objective-C篇] 运行时技术 (22:31) 2-1 [Swift篇] 关于Swift中的可选类型 (07:39) 2-2 [Swift篇] 隐式解析与可选链 (10:41) 2-3 [Swift篇] 可选类型的本质 (07:17) 2-4 [Swift篇] Swift中的权限管理 (11:32) 2-5 [Swift篇] Swift中的泛型示例 (14:06) 2-6 [Swift篇] 对泛型进行约束 (21:03) 2-7 [Swift篇] 协议与扩展 (22:05)





