我在 A 类中有一个函数 - myFunc()。还有多个其他类调用此函数。
我如何能够找出在特定实例中哪个类正在调用 myFunc()?
有人能帮我解决这个问题吗?
我在 A 类中有一个函数 - myFunc()。还有多个其他类调用此函数。
我如何能够找出在特定实例中哪个类正在调用 myFunc()?
有人能帮我解决这个问题吗?
使用访客模式
这样您就可以遵循封装的概念。
从概念上讲,这些信息在堆栈中是可用的,但并不容易获得。大多数解决方案将涉及创建异常以捕获堆栈跟踪,然后读取跟踪。我还没有尝试过,但它可能会起作用:
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!
}
相关文档:NSThread 类参考
请注意,如果您希望您的函数根据调用者的不同而表现不同,请不要这样做。它很脆弱(不能保证返回的格式是否callStackSymbols
会改变)。
最好将参数简单地传递给您的函数。如果您正在处理 C 函数回调 API,通常有一个void *
“context”或“info”参数可用于传入任意指针。这可能是指向您的对象的指针。