时有可以在我的自定义类覆盖的方法,使得当

      NSLog(@"%@", myObject) 

被调用时,它会打印我的对象的字段(或任何我认为重要的)?我想我在寻找的Objective-C相当于Java的toString()的。

有帮助吗?

解决方案

它是description实例方法,声明为:

- (NSString *)description

下面是一个示例实现(由于grahamparks):

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

其他提示

添加到您的照片类的@implementation

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

可以重写NSObject的的描述方法:

- (NSString *)description

在日志的题目,我建议这个博客张贴以在Objective-C更好的日志记录。

有两个功能,可以使用。

- (NSString*)description

当你把你的对象,即这将显示对于NSLog的参数。其他描述的功能是:

- (NSString*)debugDescription

当你在调试命令窗口po anInstanceOfYourClass这将被调用。如果你的类没有一个debugDescription功能,那么就description将被调用。

请注意的是,基类NSObject确实有description实施,但它是相当准系统:它只显示对象的地址。这就是为什么我建议你实现你想要得到的信息进行的任何类description,特别是如果你在你的代码中使用description方法。如果你在代码中使用description,我建议你实现debugDescription为好,也使debugDescription更详细。

此将输出可用的声音:

    NSLog((@"speechVoices:%", [[AVSpeechSynthesisVoice speechVoices] description] ));
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top