在Objective-c中获取对象名称

时间:2011-04-04 09:32:06

标签: objective-c instance introspection nslog

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

Foo *myFoo;

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

NSLog(@"i was called from %s", [myFoo dispalyFooObjectName]);

,结果将是:

i was called from myFoo

2 个答案:

答案 0 :(得分:6)

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

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

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

如果您需要某个“名称”,则应在name类型中添加Foo字段。

答案 1 :(得分:-1)

你可以试试这个。覆盖 - (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]);