专修iOS crash,机器学习筑基期炼丹师
## C程序设计语言的汇编解释(ARM64版) 第一章 一些实例 不多废话,直接从实例开始吧! ### 1.1 开始 讲语言的第一个例子自然是在控制台打印: ``` hello, world ``` 想必大家都可以很轻易的用C写出如下代码: ``` #include main() { printf("hello, world\n"); } ``
### 0x0 引子 最近在iOS群里面看到某应用因为Hotpatch审核被拒绝, 如果Hotpatch全面被封禁, 那还不如全切swift, 又能提高性能, 又能减少编码中犯的错误. 仔细想想如果swift也有办法被Hotpatch, 不就更加完美了? *Hotpatch是无法被全面封禁的, 可爱的程序猿们总能有应对的办法* ### 0x1 swift的方法调用方式 swift有
### 0x0 引子 之前在对swift hotpatch的原理做一个简单的介绍和简单的示例, 但基础的原理分析并不能确定真实的可行性. 为此想通过这篇文章来做一个更复杂的例子. ### 0x1 先来一个简单的例子 来一个例子, 实现用js patch swift的方法, 功能包括: - 在js中通过类名/方法名/替换的方法, 来替换swift的方法 - 在js中通过方法名来调用原有
*以下所有类和对象的描述均以Objective-C为参考, cpu架构为arm64* ### 0x0 一句话描述类和对象与内存的关系 - 类本身是一个描述, 描述里包含实例化这个类需要多大的内存, 以及内存的每个byte`是`什么内容, 这个内容的头部是一个isa, 其他内容是ivar的值或指针. - 对象是按类的描述所从内存空间里面开辟出对应大小的空间并填充isa指针(alloc)
### 0x0 crash 昨天在iOS Geekers钉钉群里聊到一个问题, 下面的代码会crash: ``` void* a = new char; id ext = (__bridge id)a; ``` crash现场如图: ![screenshot](http://img4.tbcdn.cn/L1/461/1/4e9d2cc9803f4577de30ac