首页
AI Coding
数据标注
NEW
沸点
课程
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
源码解读
订阅
忙碌的小猴子
更多收藏集
微信扫码分享
微信
新浪微博
QQ
16篇文章 · 0订阅
iOS 深入探究 AutoreleasePool
AutoreleasePool (下面称为缓存池)是 iOS 开发中的一种内存管理的机制,对象调用 autorelease 方法后会被放到缓存池中延迟释放,当缓存池需要清除时,会向这些 Autoreleased 对象发送 release 消息。 这里用 alloc 创建了 co…
NSThead的进阶使用和简单探讨
NSThread类是一个继承于NSObjct类的轻量级类。一个NSThread对象就代表一个线程。它需要管理线程的生命周期、同步、加锁等问题,因此会产生一定的性能开销。 使用NSThread类可以在特定的线程中被调用某个OC方法。当需要执行一个冗长的任务,并且不想让这个任务阻塞…
聊聊iOS开发中weak指针的原理
前几天在iOS圈内流传着“一个关于历年来weak的面试题答案”的段子,感觉有点搞怪O(∩_∩)O~~。是的,做技术开发门槛越来越高了。。。 结合查看objc源码,我写了个简单测试demo,关于对象的三个修饰词__strong、__weak、__unsafe_unretained…
Runtime源码 Category(分类)
减小单个文件的代码量(维护一个2000代码的类和维护四个500的代码的类差别还是比较明显的)。 把不同功能组织到不同的Category。 不可以添加实例变量。 在上述的代码片段里,addUnattachedCategoryForClass只是把类和category做一个关联映射…
探秘Runtime - Runtime的应用
__attribute__是一套编译器指令,被GNU和LLVM编译器所支持,允许对于__attribute__增加一些参数,做一些高级检查和优化。 __attribute__的语法是,在后面加两个括号,然后写属性列表,属性列表以逗号分隔。在iOS中,很多例如NS_CLASS_A…
iOS 解藕、组件化最佳实践
iOS 解藕、组件化最常用的是使用统跳路由的方式,目前比较常用的 iOS 开源路由框架主要是JLRoutes、MGJRouter、HHRouter等,这些路由框架各有优点和缺点,基本可以满足大部分需求。目前最常用来作路由跳转,以实现基本的组件化开发,实现各模块之间的解藕。但是,…
一个系统BUG引发的血案 -- FKDownloader
经过朋友说明, 大概是这么个现象: 他用了一个第三方下载管理器进行视频下载, 明明是设置了后台下载的, 但 App 一推到后台再回到前台, 下载进度就不动了, 但任务依然还在继续下载. 系统是 iOS 12, 手机是 iPhone 7. 刚一开始还以为第三方在进度处理方面写的有…
iOS底层面试题---OC语法部分
在MVC设计架构下的项目,KVO机制很适合实现mode模型和controller之间的通讯。 KVO 的实现依赖于 Objective-C 强大的 Runtime【 ,从以上Apple 的文档可以看出苹果对于KVO机制的实现是一笔带过,而具体的细节没有过多的描述,但是我们可以通…
Runtime源码 方法调用的过程
SEL其实就是一个不透明的类型它代表一个方法选择子,在编译期,会根据方法名字生成一个ID。 他是一个函数指针,指向方法实现的首地址。 对第五个参数cache传值为NO,因为在此之前已经做了一个查找这里CacheLookup NORMAL, CALL,这里是对缓存查找的一个优化。…
Category:从底层原理研究到面试题分析
不难发现在这个结构体重存储着对象方法、类方法、协议和属性。接下来我们来验证一下我们刚刚自己编写的Person+Eat.m这个分类在编译时是否是这种结构。 命令将Person+Eat.m文件编译成cpp文件,以下的源码分析基于Person+Eat.cpp里面的代码。下面让我们开始…