【问题标题】:Getting object name in Objective-c在 Objective-c 中获取对象名称
【发布时间】:2011-04-04 09:32:05
【问题描述】:

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

Foo *myFoo;

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

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

结果将是:

i was called from myFoo

【问题讨论】:

  • 这种对变量名的依赖有点让人担心……你想达到什么目的?

标签: objective-c instance introspection nslog


【解决方案1】:

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

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

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

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

【讨论】:

  • 谢谢,但有什么有用的技巧可以用来记录这些信息(定义宏?)
【解决方案2】:

你可以试试这个。像这样覆盖 -(NSstring*)description 方法

- (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]);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-19
    相关资源
    最近更新 更多