gpt4 book ai didi

objective-c - 如何找出谁调用了方法?

转载 作者:太空狗 更新时间:2023-10-30 03:22:32 26 4
gpt4 key购买 nike

示例:当我的方法 -fooBar 被调用时,我希望它在控制台中记录哪个其他类的其他方法调用了它。

现在,我只知道如何记录 fooBar 本身的方法名和它的类,用这个:

_cmd

[self class]

这有可能弄清楚吗?

最佳答案

在完全优化的代码中,没有 100% 万无一失的方法来确定某个方法的调用者。编译器可以采用尾调用优化,而编译器有效地为被调用者重新使用调用者的堆栈帧。

要查看此示例,请使用 gdb 在任何给定方法上设置断点并查看回溯。请注意,您不会在每次方法调用之前看到 objc_msgSend()。这是因为 objc_msgSend() 对每个方法的实现进行尾调用。

虽然您可以编译未优化的应用程序,但您需要所有系统库的非优化版本才能避免这一问题。

这只是一个问题;实际上,您是在问“我如何重新发明 CrashTracer 或 gdb?”。职业生涯的一个非常困难的问题。除非您希望“调试工具”成为您的职业,否则我建议您不要走这条路。

您真正想回答的问题是什么?

关于objective-c - 如何找出谁调用了方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1793999/

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