首页
首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
maniac_kk
掘友等级
iOS工程师
|
字节跳动
获得徽章 0
动态
文章
专栏
沸点
收藏集
关注
作品
赞
116
文章 115
沸点 1
赞
116
返回
|
搜索文章
最新
热门
iOS线程数量监控工具
简单却强大的线程监控工具 KKThreadMonitor :当线程过多或瞬间创建大量子线程(线程爆炸),控制台就打印出所有的线程堆栈。便于分析造成子线程过多或线程爆炸的原因。 有一定iOS开发基础的,应该都知道不合理创建线程,是会造成性能问题的。而业务的积累和迭代过程,可能就不…
静态插桩的方式来实现Hook Method
我之前写了一个开源库TimeProfiler,监控所有的OC方法耗时。可以在开发App阶段,很方便的看到主线程所有OC方法的耗时。但是由于TimeProfiler是通过fishhook基于运行时hook,所以从原理上,它就有局限性:不能选择hook部分类的OC方法。这造成2个很…
NSObject方法调用过程详细分析
我自己虽然之前也分析过方法调用,但是没有成体系做过笔记,这次相当于自己做一个笔记,便于以后查看。 我这个是基于最新的runtime源码版本(版本号objc4-756.2,苹果官网的源码),网上分析的大多都是几年前的版本,虽然说整个逻辑基本一致,但是还是有些许不同。 修改原型是为…
iOS程序员的自我修养-fishhook原理(五)
MachO文件动态链接里面讲到,模块间的数据访问和函数调用,都是用间接寻址。主模块将要访问动态库里的数据符号地址放在got(也称Non-Lazy Symbol Pointers)数据段,调用动态库的函数的地址放在la_symbol_ptr数据段。而数据段是可读写的,所以程序运行…
iOS程序员的自我修养-MachO文件动态链接(四)
动态链接要比静态链接复杂多了,我要是直接分析MachO文件动态链接的具体实现,会让读者知其然不知其所以然。所以本文分成2部分,第一部分先讲理论知识,基本解答了如下几个问题: 动态链接产生原因、基本思想、工作过程。 position-independent code (PIC 地…
iOS程序员的自我修养-MachO文件静态链接(三)
请注意,生成的a.o和b.o目标文件,都是基于arm64。a.o和b.o目标文件通过静态链接后生成可执行文件ab。(由于基于arm64,其实链接过程,也有动态链接库libSystem.B.dylib(系统库)参与,但本文忽略动态链接的参与,只讨论静态链接。要是基于X86,就不会…
iOS程序员的自我修养-MachO文件结构分析(二)
进程是特殊文件在内存中加载得到的结果。那这种文件的格式必须是系统内核可以理解的,系统内核才能正确解析。 系统内核将文件读入内存,然后寻找文件的头签名(魔数magic),根据magic就可以判断二进制文件的格式。 其实PE/ELF/Mach-O这三种可执行文件格式都是COFF(C…
iOS程序员的自我修养-编译、链接过程(一)
OC是用Clang/LLVM来编译的。接下来我将用clang来展开整个过程。main.m文件源码如下: 平时用Xcode去Build,一键从源码到程序。这个过程中隐藏了预处理、编译、汇编和链接4个过程如下: 处理源代码文件中的以"#"开头的预编译指令。规则如下: "#defin…
iOS程序员的自我修养-前言(零)
我们iOS开发者,大部分都是做业务上的开发。平时可能接触到编译链接方面的知识很少,但是我觉得编译链接对一个普通程序员来说,也非常重要。 比如平时用Xcode build过程有什么错误,我们可以选择站在原理层面去分析哪里出现问题了,而不是靠不停debug来解决;再比如fishho…
监控所有的OC方法耗时
类似os_signpost,支持针对每个功能点监控性能问题。 支持显示调用堆栈。(维护stack frame) ,受益良多。我运用其中的hook objc_msgSend思想,写一个监控App里所有耗时的OC方法,以便以后开发过程中,能时刻监控App耗时性能问题。本文主要包含两…
下一页
个人成就
文章被点赞
491
文章被阅读
108,302
掘力值
2,593
关注了
95
关注者
2,761
收藏集
4
关注标签
4
加入于
2018-03-19