1.description方法是NSObject自帶的方法,包括類方法和對象方法
+ (NSString *)description; // 默認返回 類名
- (NSString *)description; // 默認返回 <類名:內(nèi)存地址>
2.默認情況下利用NSLog和%@輸出對象的時返回的就是類名和內(nèi)存地址
3.修改NSLog和%@的默認輸出:重寫類對象或者實例對象的description方法即可。因為NSLog函數(shù)進行打印的時候會自動調(diào)用description方法
/******************************** Person.h文件*********************************/
#import <Foundation/Foundation.h>
@interface Person : NSObject
+ (NSString *)description;
- (NSString *)description;
@property int age;
@property NSString *name;
@end
/******************************** Person.m文件*********************************/
#import "Person.h"
@implementation Person
#pragma mark 類對象輸出的結(jié)果
+ (NSString *)description
{
return @"AAA";
}
#pragma mark 實例對象輸出的結(jié)果
- (NSString *)description
{
// NSLog(@"%@",self); 引發(fā)死循環(huán)
return [NSString stringWithFormat:@"name = %@ age = %d",_name,_age];
}
@end
/******************************** main.m文件***********************************/
#import <Foundation/Foundation.h>
#import "Person.h"
int main(int argc, const char * argv[])
{
Class c = [Person class];
NSLog(@"%@",c);
Person *person = [[Person alloc] init];
person.name = @"John";
person.age = ;
// 執(zhí)行NSLog函數(shù)的時候會調(diào)用description方法默認返回<類名/對象名: 地址>
NSLog(@"%@",person);
}