是否有一种方法可以在我的自定义类中覆盖,这样当
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
避免覆盖描述 - 如果此方法在调试操作期间触发错误,则结果可能无法预测。