是否有一种方法可以在我的自定义类中覆盖,这样当
NSLog(@"%@", myObject)
被调用,它将打印我的对象的字段(或我认为重要的任何内容)?我想我正在寻找与 Java 的toString()
.
是否有一种方法可以在我的自定义类中覆盖,这样当
NSLog(@"%@", myObject)
被调用,它将打印我的对象的字段(或我认为重要的任何内容)?我想我正在寻找与 Java 的toString()
.
它是description
实例方法,声明为:
- (NSString *)description
这是一个示例实现(感谢 grahamparks):
- (NSString *)description {
return [NSString stringWithFormat: @"Photo: Name=%@ Author=%@", name, author];
}
将此添加到@implementation
您的 Photo 类中:
- (NSString *)description {
return [NSString stringWithFormat:@"Photo: Name=%@ Author=%@",name,author];
}
您可以使用两个功能。
- (NSString*)description
这将在您将对象设置为 IE 的参数时显示NSLog
。另一个描述函数是:
- (NSString*)debugDescription
这将在您po anInstanceOfYourClass
在调试命令窗口中调用时调用。如果你的类没有debugDescription
函数,那么description
就会被调用。
请注意,基类NSObject
确实已经description
实现,但它相当简单:它只显示对象的地址。这就是为什么我建议您description
在任何想要从中获取信息的类中实现,尤其是如果您description
在代码中使用该方法。如果你确实description
在你的代码中使用,我建议你也实现debugDescription
,同时也debugDescription
更加冗长。
这将输出可用的声音:
NSLog((@"speechVoices:%", [[AVSpeechSynthesisVoice speechVoices] description] ));
我认为应该强调@Nuthatch 用CoreData(即继承NSManagedObject 的类)覆盖“描述”的评论
https://developer.apple.com/documentation/coredata/nsmanagedobject?language=objc
避免覆盖描述 - 如果此方法在调试操作期间触发错误,则结果可能无法预测。