首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
扩展
订阅
大鱼D
更多收藏集
微信扫码分享
微信
新浪微博
QQ
21篇文章 · 0订阅
运行时Hook所有Block方法调用的技术实现
本技术实现在YSBlockHook中。 iOS系统中一共有:C函数、Block、OC类方法三种形式的方法调用。Hook一个方法调用的目的一般是为了监控拦截或者统计一些系统的行为。Hook的机制有很多种,通常良好的Hook方法都是以AOP的形式来实现的。 当我们想Hook一个OC…
一种查看Block中引用的所有外部对象的实现方法
在项目工程中打开Edit Scheme... 在出现的如下界面: 中勾选Malloc Stack。 这样在Debug Memory Graph中就可以看到对象的内存分配调用栈信息,以及某个block的实现函数代码了。 在lldb控制台中使用 po [xxx debugDescr…
GCD源码分析
如果是串行队列,则使用_dispatch_get_root_queue(0, true)函数获取目标队列,获取到的目标队列是_dispatch_root_queues[DISPATCH_ROOT_QUEUE_IDX_DEFAULT_OVERCOMMIT_PRIORITY]。 如…
iOS-底层原理 31:LLVM编译流程 & Clang插件开发
本文主要是理解LLVM的编译流程以及clang插件的开发LLVMLLVM是架构编译器的框架系统,以C++编写而成,用于优化任意程序语言编写的程序的编译时间(compile-time)、链接时间(lin
手撕iOS底层20 -- 类的加载【中卷】
ro表示read only的意思, 即只读, 包含名称, 方法, 协议以及实例变量信息, 因为是只读的,所以也就是WWDC说的clean memory,而clean memory在加载到内存后是不会发生改变的。 rw表示read write,就是可读可写, 由于runtime的…
客户端基础知识—— iOS 系统上 mmap 的“妙用”
mmap:文件映射,用于将文件或设备映射到虚拟地址空间中,以使用户可以像操作内存地址一样操作文件或设备。 将硬盘上的文件映射到进程的虚拟地址空间中的一段空间,开发者可以像读写内存一样直接读写硬盘上的文件。 mmap 可以使开发者像操作连续内存一样读写一个文件。且默认使用操作系统…
iOS卡顿监测方案总结
最近在写APM相关的东西,所以整理了一下iOS中卡顿监测的那些方案,不了解卡顿的原理的可以看这篇文章iOS 保持界面流畅的技巧,写的很好。 FPS (Frames Per Second) 是图像领域中的定义,表示每秒渲染帧数,通常用于衡量画面的流畅度,每秒帧数越多,则表示画面越…
自研 iOS 热更新机制——OCPack技术方案总结
I. 方案简介 OCPack是一种 iOS 平台上 App 动态化技术方案,用户可以使用 Objective-C 语言编写待动态化的功能逻辑(生成.m文件),然后通过OCPack提供的工具链生成 patch 文件(.bin格式)。客户端则内置了一个基于 Native 环境的的虚…
基于 Mach-O 符号重排减少缺页中断次数来提升 iOS App 启动速度的可行性分析
最近字节跳动技术团队放出了一篇文章:抖音研发实践:基于二进制文件重排的解决方案 APP启动速度提升超15%,提到通过重排 Mach-O中的二进制,减少启动流程中的缺页中断次数,为 App 节约了 200ms 左右的启动时间(根据抖音目前的启动速度估算),本着严谨的态度,本文将对…
OCMock 源码学习笔记
使用 XCTest + OCMock 写单元测试也有一段时间了. 一直没了解 OCMock 到底是怎么实现的, 所以就想找个时间读读源码, 揭开 OCMock 的神秘面纱. 第一步, 首先会调用 forwardingTargetForSelector: 方法获取一个可以处理该…