在Objective-c中获取对象名称

在Objective-c中获取对象名称,objective-c,instance,introspection,nslog,Objective C,Instance,Introspection,Nslog,假设我有一个类Foo和这个类myFoo的一个实例: Foo *myFoo; 是否有任何方法“dispalyFooObjectName”可以显示对象的名称,例如: NSLog(@"i was called from %s", [myFoo dispalyFooObjectName]); 结果将是: i was called from myFoo 在大多数编程语言中,对象没有名称。仅仅因为某个变量myFoo引用了您的对象,并不意味着您的对象被“调用”myFoo 在大多数基于C的语言中,变量名根

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

Foo *myFoo;
是否有任何方法“dispalyFooObjectName”可以显示对象的名称,例如:

NSLog(@"i was called from %s", [myFoo dispalyFooObjectName]);
结果将是:

i was called from myFoo

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

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

因此,简单的回答是,没有办法获得这些信息


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

你可以试试这个。重写-(NSstring*)这样的描述方法

- (NSString*)description {
     return [NSString stringWithFormat:@"I'm called from foo"];//You can also print object's properties description here.
  }
像这样使用

 NSLog(@"my Foo object %@",[myFoo description]);

谢谢,但是有没有什么有用的技巧可以用来记录这些信息(定义宏?)这种对变量名的依赖有点令人担忧。。。你想达到什么目标?