什么是“toString()”的Objective-C等价物,用于NSLog?

有没有一种方法,我可以重写我的自定义类,以便何时

NSLog(@"%@", myObject) 

被称为,它会打印我的对象的领域(或任何我认为重要的)? 我想我正在寻找Java的toString()的Objective-C等价物。

5 Solutions collect form web for “什么是“toString()”的Objective-C等价物,用于NSLog?”

它是description实例方法,声明如下:

 - (NSString *)description 

这是一个示例实现(感谢grahamparks):

 - (NSString *)description { return [NSString stringWithFormat: @"Photo: Name=%@ Author=%@", name, author]; } 

将其添加到Photo类的@implementation中:

 - (NSString *)description { return [NSString stringWithFormat:@"Photo: Name=%@ Author=%@",name,author]; } 

您可以覆盖NSObject的描述方法:

 - (NSString *)description 

关于日志logging的问题,我推荐这个博客文章来更好地loggingObjective-C。

有两个function,你可以使用。

 - (NSString*)description 

当你把你的对象作为IE浏览器的一个参数时,这个会显示出来。 其他描述function是:

 - (NSString*)debugDescription 

这将在debugging命令窗口中执行po anInstanceOfYourClass时调用。 如果你的类没有debugDescription函数,那么只会调用description

请注意,基类NSObject确实具有实现的description ,但它是相当简单的:它只显示对象的地址。 这就是为什么我build议你在任何想要获取信息的类中实现description ,特别是如果你在你的代码中使用description方法。 如果你在代码中使用description ,我build议你也实现debugDescription ,也使debugDescription更加冗长。

这将输出可用的声音:

  NSLog((@"speechVoices:%", [[AVSpeechSynthesisVoice speechVoices] description] )); 
  • 如何将堆栈跟踪转换为string?
  • 是否有可能重写JavaScript的toString()函数提供有意义的输出debugging?
  • 如何格式化C#小数点以除去多余的下面的0?
  • C ++vectorstring
  • Convert.ToString()和.ToString()之间的区别
  • 什么时候不需要在Java中实现toString()?
  • 将int转换为Linq中的string到实体的问题
  • Java的toString()使用reflection?
  • 用户友好的字符串的枚举ToString
  • 使用Google Guava的Objects.ToStringHelper
  • 如何获取整个文档的HTML作为一个string?