調(diào)試程序時,需要打印并查看對象信息柜蜈,
NSLog(@"objeect = %@",object);
說明:
在構建需要打印到日志的字符串時以故,object對象會收到description消息屯耸,該方法所返回的描述信息將取代“格式字符串”里的“%@”。
// 數(shù)組對象:
NSArray *object = @[@"a string", @123];
NSLog(@"objeect = %@",object);
輸出:
objeect = (
"a string",
123
)
// 自定義對象 輸出:
objeect = <EOCPerson: 0x1d003d140>
// 一般可以這樣覆寫某個類的description方法:
- (NSString *)description
{
return [NSString stringWithFormat:@"<%@: %p, \"%@ %@\">", [self class], self, _firstName, _lastName];
}
打印類實例對象送丰,輸出:
objeect = <EOCPerson: 0x1d022b0e0, "bob smith">
應根據(jù)當前對象來決定在description方法里打印何種信息缔俄。
把待打印的信息放到字典里面,然后將字典對象的description方法所輸出的內(nèi)容包含在字符串里并返回器躏。
// 借助字典 覆寫description方法:
- (NSString *)description
{
return [NSString stringWithFormat:@"<%@: %p, %@>", [self class], self, @{@"firstName" : _firstName, @"lastName" : _lastName}];
}
輸出:
objeect = <EOCPerson: 0x1d4222b40, {
firstName = bob;
lastName = smith;
}>
debugDescription方法與description方法非常相似俐载,debugDescription方法是開發(fā)者在調(diào)試器中以控制臺命令打印對象時才調(diào)用。在NSObject類的默認實現(xiàn)中登失,此方法只是直接調(diào)用了description遏佣。
// 覆寫:
- (NSString *)description
{
return [NSString stringWithFormat:@"<%@>",@{@"firstName" : _firstName, @"lastName" : _lastName}];
}
- (NSString *)debugDescription
{
return [NSString stringWithFormat:@"<%@: %p, %@>", [self class], self, @{@"firstName" : _firstName, @"lastName" : _lastName}];
}
打印對象,調(diào)用description輸出:
objeect = <{
firstName = bob;
lastName = smith;
}>
打斷點,控制臺po命令揽浙,調(diào)用debugDescription輸出:
<EOCPerson: 0x1d00278e0, {
firstName = bob;
lastName = smith;
}>