在Objective-c中获取对象名称

tar*_*rek 3 introspection objective-c instance nslog

假设我有一个类Foo和这个类的实例myFoo:

Foo *myFoo;
Run Code Online (Sandbox Code Playgroud)

是否有任何方法"dispalyFooObjectName"可以显示对象的名称,例如:

NSLog(@"i was called from %s", [myFoo dispalyFooObjectName]);
Run Code Online (Sandbox Code Playgroud)

结果将是:

i was called from myFoo
Run Code Online (Sandbox Code Playgroud)

Joa*_*uer 6

在大多数编程语言中,对象没有名称.仅仅因为某些变量myFoo引用了您的对象,并不意味着您的对象被"调用" myFoo.

在大多数基于C的语言中,变量名称根本不在最终的可执行文件中表示(外部符号的名称除外).

所以简短的回答是没有办法获得这些信息.

如果你想要一些"名字",那么你应该name在你的Foo类型中添加一个字段.