gpt4 book ai didi

objective-c - 使用 Objective-C 元数据生成类依赖图

转载 作者:太空狗 更新时间:2023-10-30 03:43:35 24 4
gpt4 key购买 nike

这个人想出了一个非常简洁的工具来生成类依赖关系图 - 然而,它依赖于解析您的源代码并寻找 #import 指令。

这很好,但我有很多问题。尤其重要的是,它既不考虑导入的导入,也不考虑前缀 header ,也不考虑导入引用的文件中的类是否实际被使用。

我想做一些更类似于 class-dump 的事情,并检查存储在 Mach-O 文件中的 Objective-C 元数据,以生成类依赖项的内存表示。

我不想从头开始,所以我想知道:

  • 已经完成了吗?
  • 是否有一个开源库可以为我提供提取此信息所需的基础工具(一个检查 Mach-O 文件并创建其中包含的 Objective-C 信息的外观的库 - 这样我可以遍历所有类、它们的方法、属性、ivar 等并扫描对其他类的引用)我认为类转储的源代码是一个很好的起点。
  • 如果您有这方面的经验,我想要实现的目标是否可行?
  • 我需要克服哪些障碍?

最佳答案

Has it already been done?

据我所知不是。

Is there an open-source library which would provide me with the foundational tools I need to extract this information?

class-dump 的核心是 libMachObjC,它完全可以满足您的需求,即解析所有类/方法/ivars 等等。 API 非常干净,应该非常容易使用。

If you have experience in this sort of thing, is what I'm trying to accomplish feasible?

不幸的是,没有,因为有些类没有声明真正的类,而是使用 id 代替。例如,这里是可以从 UIKit 类转储中提取的信息:

@interface UITableView : UIScrollView <NSCoding>
{
int _style;
id <UITableViewDataSource> _dataSource;
id _rowData;
...

_rowData ivar 类型信息是 id 但如果您在运行时检查,您会看到 _rowData 的一个实例UITableViewRowData 类。此信息不存在于 Mach-O 二进制文件中,因此您无法找到 UITableViewUITableViewRowData 之间的关系。这同样适用于方法参数。

关于objective-c - 使用 Objective-C 元数据生成类依赖图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7219102/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com