获取调用方法的对象

Egi*_*gil 7 objective-c objective-c-runtime

如果我在这样的随机类中有一个调用:

@implementation SomeClass

- (void) classMethodFoo
{
    int a = [SomeSingleton sharedInstance].aValue;
}

@end
Run Code Online (Sandbox Code Playgroud)

在里面SomeSingleton sharedInstance,有没有办法获得对调用此方法的对象的引用(当然没有调用传递self作为参数)?

Jos*_*ell 7

不,有关调用者的信息不会自动传递.

这就是为什么IBAction方法有一个sender参数,以及为什么委托方法通常有一个引用委托对象的参数的原因.

  • 我想补充说虽然可以[获取调用堆栈](http://stackoverflow.com/questions/5788850/see-objc-calls-in-call-stack)但是你无法获得调用对象没有平台依赖的堆栈行走(据我所知). (3认同)
  • 此外,可能是没有"对象"称为该方法的情况.例如,可以从函数调用该方法. (3认同)