美文网首页
Runtime 开篇

Runtime 开篇

作者: yizhaorong | 来源:发表于2017-08-15 13:50 被阅读118次

可编译版本

objc-709

前言

从源码的角度分析、学习iOS Runtime,这是第一篇,介绍编译和调试 Runtime源码

下载源码

下载

前往源码地址下载最新的Runtime源码,本文使用的是

objc4-709版本

解压

双击下载好的obc4-709.tar.gz解压得到如下图的文件


双击打开objc.xcodeproj

创建调试Target

创建target

创建一个 command line target 命名为 objc-debug

添加依赖

将静态库工程objc添加为objc-debug的依赖,并在Link Binary With Libraries中添加libobjc.A.dylib

编译

cmd+B编译,出现编译错误sys/reason.h

创建头像文件目录

objc4-709目录中创建include目录,并在objc-debugobjc的Target中。Build Settings>Search Paths>Header Search Paths 添加 $(SRCROOT)/include

下载缺失头文件

使用Google搜索reason.h site:opensource.apple.com,百度不行。由于reason.hsys目录下,所以在include目录中创建sys目录,并将reason.h放入sys目录中,重新编译。

以同样的方式下载并添加到include目录中,继续编译

以同样的方式下载并添加到include目录中,继续编译

以同样的方式下载并添加到include目录中,继续编译

把所有需要的头文件都加入include目录中。

修改部份头文件中的定义

修改CrashReporterClient.h 添加 #define LIBC_NO_LIBCRASHREPORTERCLIENT

修改objc-os.h#include "objc-config.h"下面添加#include <pthread/qos_private.h>

编译出现以下错误

Order File中添加$(SRCROOT)/libobjc.order

继续编译出现以下错误

解决方式是在Other Linker Flags中删除-lCrashReporterClient

编译成功

调试

通过修改部份代码,调整设置终于可以调试了。在NSObject.mm中添加如下断点。

结语

通过一系列的调整,就可以调试runtime源码了。

相关文章

  • Runtime 开篇

    可编译版本 objc-709 前言 从源码的角度分析、学习iOS Runtime,这是第一篇,介绍编译和调试 Ru...

  • Runtime-开篇

    关于Class和Id 当你写一个Class去看系统的API时:typedef struct objc_class ...

  • Runtime学习01

    Runtime.h runtime开篇定义了四个类型 上述四行代码分别 定义Method 为指向objc_meth...

  • runtime的那些事(二)——NSObject数据结构

    在整理复习 runtime 知识点的过程中,发现不得不巩固 runtime 关于数据结构方面的知识,所以单独开篇关...

  • Runtime 从NullSafe源码看消息转发 机制

    开篇 马上就要年底了再码一波,自己总结一下Runtime,打算总结一下Runtime的各种用法,结合一些常见的源码...

  • swift中KVO和属性观察器

    开篇提醒:OC中的KVO及其KVO的基础知识可参见:深入runtime探究KVO Swift中,原本没有KVO模式...

  • iOS - Runtime理解

    开篇详谈:最近在做埋点需求,研究了下Runtime,本着研究学习的心态 忙里偷闲总结下,有不足之处,欢迎大佬指正 ...

  • iOS之RunTime探索与实践

    Runtime 概念 Runtime 相关概念 Runtime 实践 Runtime概念 Runtime简称运行时...

  • OC -> Runtime

    Runtime简介 Runtime用处 Runtime实践 Runtime 类方法调用实现。Person * p ...

  • iOS runtime 理解(一)

    前言 作为一个面试被问的最多的问题runtime,我决定用它来开始我技术博客的开篇。因为个人水平有限,写出来的东西...

网友评论

      本文标题:Runtime 开篇

      本文链接:https://www.haomeiwen.com/subject/ajoprxtx.html