NSLog(@"%@",类对象); 默认输出类名

时间:2023-03-09 02:49:51
NSLog(@"%@",类对象); 默认输出类名

NSLog()函数输出Objective-c对象时,输出的是该对象的description方法的返回值。也就是说,以下两行代码作用完全一样(假设p是指向任何对象的指针变量)。

NSLog(@"%@",p);
NSLog(@"%@",[p description]);

NSLog(@"%@",类对象); 调用+description,此类方法返回值是 类名 ,所以这行代码的默认作用是输出类名

NSLog(@"%@",实例对象); 调用-description,此实例方法返回值是<类名:十六进制的首地址>,所以这行代码默认作用是同时输出类名和地址。 在-description方法中使用NSLog打印self,会造成死循环。

-description方法是NSObject类的方法,+descrip也是?(此行存疑)

两个description返回值都是NSString,都可以重写,以达到自定义“自我描述”的目的。

相关文章