首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
OC
订阅
可爱的小飞飞
更多收藏集
微信扫码分享
微信
新浪微博
QQ
99篇文章 · 0订阅
PinCache源码--PINOperationQueue
引言 一直对缓存很感兴趣,之前看的是TMCache,但是TMCache存在死锁的问题,并且TMCache也没有继续维护,不过PIN团队基于TMCache重写了一套缓存框架PINCache。 在看P
iOS多线程安全-13种线程锁🔒
多个线程访问同一块资源的时候,很容易引发数据混乱问题。 正常情况下我有50张票,然后卖了50次,剩余票数应该是0,但是打印结果竟然是3,所以这里就存在了线程安全问题。 出现线程安全的原因就是在同一个时间,多个线程同时读取一个值,像线程A和B同时读取了当前票数为10,等于是卖了两…
企业证书签名的 iOS App 内 WKWebView/JavaScriptCore 的调试支持
众所周知,在iOS平台上,要想调试App中的WKWebView或JavaScriptCore中运行的javascript代码,一般都要求用Xcode将App工程以Debug配置布署到手机上,再使用PC侧Safari的Developer菜单中的对应选项进行调试。 公司的内测包和线…
探究Mach-O文件
进程是可执行文件在内存中加载得到的结果,这种文件必须是操作系统理解的格式,这样操作系统才能解析文件,简历所需要的依赖(如库),初始化运行环境并执行。 除了用MachOView能查看MachO文件信息,还可以通过otool命令查看,我们先来分析Header中的内容:otool -…
一文读懂fishhook原理
fishhook是facebook开源的第三方框架。从名称上看含有hook这个词,其本意就是"钩子",钩子就是用来勾住某一种事物,比如fish鱼。在计算机中就可以勾住某一个程序(就是挂钩程序)或者某一个函数,从而扩展程序功能或者改变程序运行的流程,比如在iOS开发中经常会被用来…
iOS汇编教程(六)CPU 指令重排与内存屏障
具有 ARM 体系结构的机器拥有相对较弱的内存模型,这类 CPU 在读写指令重排序方面具有相当大的自由度,为了保证特定的执行顺序来获得确定结果,开发者需要在代码中插入合适的内存屏障,以防止指令重排序影响代码逻辑[1]。 本文会介绍 CPU 指令重排的意义和副作用,并通过一个实验…
iOS 底层拾遗:objc_msgSend 与方法缓存
行文过程中会涉及到一些汇编代码,不过不影响理解核心逻辑。 源码基于 Runtime 750,arm64 架构。 注意: arm64 汇编代码会出现很多p字母,实际上是一个宏,64 位下是x,32 位下是w,p就是寄存器。 $0获取宏的第一个参数,调用时传的p13,即是isa。这…
分析可执行文件mach-o
Mach-O 是针对不同运行时可执行文件的文件类型。在Windows上.exe(Portable Executable )是可直接执行的文件扩展名,而在Linux(以及很多版本的Unix)系统上ELF (Executable and Linking Format)是可直接执行的…
深入探索 iOS 内存优化
1945 年,冯·诺伊曼体系结构被提出,奠定了计算机的基础,同时其局限性也限制了计算机的进一步发展,直至现代,计算机体系还是没能逃离其局限性,只是陆续对其组织结构进行优化而已。 冯·诺伊曼体系结将计算机分为运算器、控制器、存储器、输入设备和输出设备五大部分,由于存储器的读写效率…
iOS大解密:玄之又玄的KVO
1. 缘起 Aspects SDMagicHook 开源之后很多小伙伴在问“SDMagicHook 和 Aspects 的区别是什么”,我在 GitHub 上找到 Aspects 了解之后发现 Aspects 也是以 isa 交换为基础原理进行的 hook 操作,但是两者在具体…