gpt4 book ai didi

objective-c - 在 Objective-C 中有没有办法获取方法调用的方法列表?

转载 作者:搜寻专家 更新时间:2023-10-30 20:27:57 26 4
gpt4 key购买 nike

我一直在网上做一些研究,发现使用 Objective C 中的 ObjectiveC 包,您可以使用 class_copyMethodList() 获取类中所有方法的列表>,我看到您可以使用 instanceMethodForSelector: 获取方法的实现 (IMP)。 Apple 文档 here到目前为止一直很有帮助,但我被卡住了,不确定我真正想要找到什么。

我想要一个在给定方法的实现中调用的方法/函数的列表,这样我就可以构建一个调用树。

有什么建议吗?提前致谢!

最佳答案

这个解决方案有点难,会在每个方法中产生一行代码你也可以使用sqlite并保存跟踪的方法..

MethodTracker.h

@interface MethodTracker : NSObject

@property (nonatomic) NSMutableArray *methodTrackArr;

+ (MethodTracker *)sharedVariables;

@end

MethodTracker.m

@implementation MethodTracker

static id _instance = nil;

+ (MethodTracker *)sharedVariables
{
if (!_instance)
_instance = [[super allocWithZone:nil] init];

return _instance;
}

// optional
- (void)addMethod:(NSString *)stringedMethod
{
// or maybe filter by: -containObject to avoid reoccurance
[self.methodTrackArr addObject:stringedMethod];
NSLog("current called methods: %@", methodTrackArr);
}

@end

并像这样使用它:

OtherClass.m

- (void)voidDidLoad
{
[super viewDidLoad];
[[MethodTracker sharedVariables] addMethod:[NSString stringWithUTF8String:__FUNCTION__]];
// or directly
[[MethodTracker sharedVariables].methodTrackArr addObject:[NSString stringWithUTF8String:__FUNCTION__]];
}
- (void)someOtherMethod
{
// and you need to add this in every method you have (-_-)..
[[MethodTracker sharedVariables] addMethod:[NSString stringWithUTF8String:__FUNCTION__]];
}

我建议您将 MethodTracker.h 导入到 [ProjectName]-Prefix.pch 文件中。

抱歉,对于双重回答,我删除了另一个,我不知道那是怎么发生的..

Hope this have helped you or at least gave you an idea.. Happy coding, Cheers!

关于objective-c - 在 Objective-C 中有没有办法获取方法调用的方法列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30552390/

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