首页
沸点
课程
APP
AI用量
作品广场
专家标注
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
排行榜
综合
后端
前端
Android
iOS
人工智能
开发工具
代码人生
阅读
综合
后端
排行榜
前端
Android
iOS
人工智能
开发工具
代码人生
阅读
全部
iOS
Swift
前端
SwiftUI
人工智能
后端
Objective-C
Apple
Flutter
展开
全部
iOS
Swift
前端
SwiftUI
人工智能
后端
Objective-C
Apple
Flutter
音视频开发
面试
JavaScript
汇编语言
APP
Xcode
暂无数据
推荐
最新
APM_符号化原理
前言 未符号化前,调用栈中的地址: 符号化后: 在开始之前,需要了解一些基本的概念: DWARF dSYM Mach-O DWARF 就是一种数据格式,记录了调试信息,通过机器指令就能找到对应的源码:
读懂 iOS 的线程调用栈
开头 经常崩溃的朋友对调用栈都不陌生,比如,下面是在一个空的 Swift 项目中的 ViewControoler 写入一个崩溃: 执行到这里时,项目会崩溃,我们会得到这样的调用栈: 一眼就能看出崩溃是
APM_寄存器
前言 下面讨论的是 Apple 平台目前常见的 ARM64 寄存器,不同 CPU 架构的寄存器名称和调用规则不同。 寄存器是什么 寄存器 是 CPU 内部用来临时保存数据和执行状态的高速存储单元。 程
OC 局部变量未初始化的危险性
问题提出 前几天在协助业务同学排查业务问题时,遇到了一个奇怪的问题。实际的业务代码如上,默认定义了一个局部变量 variable ,通过另一个开关控制这个参数是否为 NO。但观察线上数据,在开关为 N
iOS block调用为啥要判空
在iOS中,使用nil指针调用OC的方法是安全的,但是使用nil指针调用block却会产生崩溃。本篇文章,将会从汇编的角度解释该现象。
arm64 架构之入栈/出栈操作
31 个R0 ~ R30,每个寄存器可以存取一个 64 位大小的数。 当使用 x0 - x30访问时,是一个 64位的数;当使用 w0 - w30访问时,是一个 32 位的数,访问的是寄存器的 低 32 位,如图: (也可以说是 浮点型寄存器)每个寄存器的大小是 128 位的。…
58同城iOS包大小治理工具解密
Swift无用类的检测比OC复杂,因为classrefs段中并没有其引用的类。本文通过遍历__text中bl汇编指令返回地址,对比Swift类的AccessFunction,来搜索Swift有用类。
Block 内调用 super 引发的循环引用
1. 介绍了两种较为少见的 Block 循环引用,并提供了解决方法。 2. 宏的替换在 Preprocessed 阶段,super 的变更在 compile 阶段,因此对 self 进行 weak/s
6.AT&T汇编
常见的寄存器 rax、rbx、rcx、rdx、rsi、rdi、rbp、rsp r8、r9、r10、r11、r12、r13、r14、r15 寄存器的具体用途 rax、rdx常作为函数返回值使用 rdi、
深入iOS系统底层系列文章目录
一直想写一些关于系统底层方面的知识点,并且酝酿了很久,后来也跟其他人交流,你为何不出一个系列呢? 不必要一次性把所有的东西都写完后才发表,我听说后觉得非常的有道理,虽然自己的水平也很一般,但是想想自己还是有一些积累的。这虽然是一系列介绍iOS底层相关方面的知识的文章,但又不是介…
arm64汇编指南
本文介绍了arm64的寄存器和常用指令, 寄存器分为通用寄存器、状态寄存器和浮点寄存器, 然后讲解了函数调用栈和OC方法调用原理
04-探究iOS底层原理|ARM64汇编
本文探索的ARM64汇编属于 探索底层原理的前知识,是iOS系统的真机环境下【ARM64】硬件架构的相关汇编知识
Weak 变量在对象释放时到底发生了什么?
问题提出 真实案例,都脱胎于业务代码,有历史积淀的业务代码常常令人内牛满面。之前网上会有非常多的讨论,建议大家不要在 dealloc 里做太多逻辑,也有不少相关的整理,例如:避免在 dealloc 中
__inline__ 是否会改变 local static variable 的行为?
问题最早是最近在看公司内某个 DI 库 ,学到了非常多有趣的设计与设计理念,但同时也遇到了一些疑问,例如这个 XXXIsBlock 。 问题最早是最近在看公司内某个 DI 库 ,学到了非常多有趣的设计
iOS汇编之ARM64基础介绍
arm64提供了31个64位通用寄存器。参数寄存器是x0 ~ x7,大于8个会通过堆栈传参,x0一般表示返回值。 x8:间接寻址结果,当返回值(比如结构体size)大于16个字节的时候,该返回内容会
记 libAccessibility 通知 Crash 排查
Crash 信息 libAccessibility 在发送通知时产生了 Crash。 复现场景 在某些路径可以复现 Crash: 这里取出对象 isa 中的 class 对象 PAC 验签后使用,在
深入iOS系统底层之函数调用
古器合尺度,法物应矩规。--苏洵 可执行程序是为了实现某个功能而由不同机器指令按特定规则进行组合排列的集合。无论高级还是低级程序语言,无论是面向对象还是面向过程的语言最终的代码都会转化为一条条机器指令的形式被执行。为了管理上的方便和对代码的复用,往往需要将某一段实现特定功能的指…
iOS汇编教程(七)ARM Exclusive - 互斥锁与读写一致性的底层实现原理
在多线程编程中,我们常常使用互斥锁来保证全局变量的线程安全,例如 pthread 中的 pthread_mutex,mach 中的 semaphore。他们通过 lock & unlock 或是 up & down 的方式来维护资源的状态,保证只有特定个数的线程能获得特定个数的…
[译]Metal 渲染管线教程
本文是我们书《Metal by Tutorials》中第 3 章的节选。这本书会带你进入 Metal 图形编程---Metal 是苹果的 GPU 编程框架。你将会用 Metal 构建你自己的游戏引擎,创建 3D 场景及构建你自己的 3D 游戏。希望你喜欢! 在本教程中,你将深入…
iOS汇编教程(四)基于 LLDB 动态调试快速分析系统函数的实现
在前三篇文章中,主要介绍了汇编中的常见指令和寻址方法,本文将结合这些知识介绍一种基于汇编代码和动态调试快速分析函数逻辑的方法。 在进行逆向工程,或是涉及到底层的正向开发(如性能优化、安全防护)时,常常会使用一些系统级的函数,有些时候从细节上了解这些函数的逻辑是十分必要的,例如 …