什么是“toString()”的Objective-C等价物,用于NSLog?
有没有一种方法,我可以重写我的自定义类,以便何时
NSLog(@"%@", myObject)
被称为,它会打印我的对象的领域(或任何我认为重要的)? 我想我正在寻找Java的toString()
的Objective-C等价物。
它是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] ));