是否可以在运行时进行?
就像是:
-(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 – 如何以编程方式查找给定方法的调用者所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)