Associated Objects 实现原理

在上一篇《Category 梳理》里面提到 Category 可以添加实例方法、添加类方法、添加协议,但是不能添加属性。原因是 objc_category 结构体中没有属性(实例)列表,即使我们声明了属性,编译器也不会帮我们生成对应的 setter/getter。所以这种情况下,如果调用这些属性,会出现崩溃的情况。但这个问题是可以解决的。OC 是一门动态语言,方法真正的实现是通过 runtime 来完成的,虽然系统未给我们生成 setter/getter,但我们可以通过 runtime 来手动添加需要的 setter/getter 方法。即引申除了将要梳理的 Associated Objects。

发布于 iOS

Category 实现原理

本篇是整理之前的笔记,梳理下在 runtime 层面是怎么处理的 Category。

发布于 iOS

iOS 中的锁

我们在使用多线程访问同一块资源时,常会面临数据安全的问题。为了能够保证每次只有一个线程在访问同一块资源,我们需要借助锁。本篇归类记录 iOS 常见的八种锁是什么及怎么样。

发布于 iOS

iOS 多线程 - NSOperation

iOS 日常开发过程中,涉及到多线程处理的需求,绝大多数可以通过 GCD 来完成。但如果想要给 task 添加依赖、取消、暂停、恢复的需求,GCD 的实现就会变得很复杂。这时就引申除了 NSOperation,NSOperation 是基于 GCD 的封装,提供面向对象的形式。我们可以借助 NSOperation 将每个 task 封装为一个个对象再进行操作,这也使得线程处理的代码逻辑更为清晰易懂。

发布于 iOS

iOS 多线程 - GCD

GCD(Grand Central Dispatch)是苹果提出的一套多线程解决方案,它拥有系统级的线程管理机制,开发者不需要关注线程的生命周期管理,只需要关注要执行的任务。GCD 可用于多核的并行运算,会自动利用更多的 CPU 内核。

发布于 iOS

Block 梳理

本篇是对 Block 的梳理。

发布于 iOS

本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。

本站由 @JonyFang 创建,使用 Stellar 作为主题,您可以在 GitHub 找到本站源码。