XcodeObjective-c – 如何以编程方式查找给定方法的调用者

XcodeObjective-c – 如何以编程方式查找给定方法的调用者,第1张

概述在 xcode中,我能够使用图片中的按钮找到给定方法的调用者. 是否可以在运行时进行? 就像是: -(NSArray *)getCallersOfFoo { // is it possible to find the callers of the method foo?}-(void)foo {...} 不完全是答案,但它可能有所帮助.此方法将为您提供打印输出堆栈或调用区域中的调用方 在 xcode中,我能够使用图片中的按钮找到给定方法的调用者.

是否可以在运行时进行?

就像是:

-(NSArray *)getCallersOfFoo {  // is it possible to find the callers of the method foo?}-(voID)foo {...}
解决方法 不完全是答案,但它可能有所帮助.此方法将为您提供打印输出堆栈或调用区域中的调用方.您可以修改它们当然可以随意使用这些值.

代码有点“被盗”,但我没有提到哪里.

#define SHOW_STACK NSLog(@"%@",[NSThread callStackSymbols])#define SHOW_CALLER \do {                \NSArray *syms = [NSThread  callStackSymbols]; \if ([syms count] > 1) { \    NSLog(@"<%@ %p> %@ - caller: %@ ",[self class],self,NsstringFromSelector(_cmd),[syms objectAtIndex:1]); \} else { \    NSLog(@"<%@ %p> %@",NsstringFromSelector(_cmd)); \} \} while(0)

编辑:你可能想要这样的东西:

Nsstring *caller = nil;NSArray *syms = [NSThread  callStackSymbols];if (syms.count > 1){    caller = syms[1];}if (caller.length){    NSLog(@"%s called by %@",__PRETTY_FUNCTION__,caller);}

你可能会发现another Q&A here on SO非常有用.

总结

以上是内存溢出为你收集整理的Xcode / Objective-c – 如何以编程方式查找给定方法的调用者全部内容,希望文章能够帮你解决Xcode / Objective-c – 如何以编程方式查找给定方法的调用者所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1005303.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存