我在A类中有一个函数 - myFunc()。还有多个其他类调用此函数。
我如何能够找出在特定实例中调用myFunc()的类?
有人可以帮我这个吗?
答案 0 :(得分:1)
使用访客模式
这样你就会遵循封装的概念。
答案 1 :(得分:1)
从概念上讲,这些信息在堆栈中可用,但并不容易。大多数解决方案都涉及创建异常以捕获堆栈跟踪,然后读取跟踪。我没试过这个,但它可能有用:
void myFunc()
{
NSArray *stack = [NSThread callStackSymbols];
// I have no idea if the current function call is at the 0 or last position
// of the array. Experiment here!
}
请注意,如果您希望您的功能根据呼叫者的不同而有所不同,请勿执行此操作。它很脆弱(无法保证callStackSymbols
返回的格式是否会发生变化)。
最好简单地将参数传递给您的函数。如果您正在处理C函数回调API,通常会有void *
“上下文”或“信息”可用于传入任意指针的参数。这可能是指向对象的指针。