【iOS】——处理对象(打印对象和description)

打印对象和description方法

1.description方法是NSObject类的一个实例方法,所有的Objective-C类都是NSObject类的子类,因此,所有的Objective-C都具有description方法。
2.description方法通常用于实现一个功能:当程序直接打印该对象时,系统会输出该对象的“自我描述”信息,用于告诉外界该对象具有的状态信息。
3.NSObject类提供的desription方法总是返回该对象的首地址,这个返回值并不能实现“自我描述”的功能,因此,如果用户需要自定义类能实现“自我描述”的功能,必须重写NSObject类的description方法。

很多时候,重写description方法可以返回该对象所有令人感兴趣的信息所组成的字符串,格式通常如下:

<类名 [实例变量1 =1, 实例变量2 =2,...]> 

示例:

//FKApple.h
#import <Foundation/Foundation.h>

@interface FKApple : NSObject
@property (nonatomic , copy) NSString* color;
@property (nonatomic , assign) double weight;
- (id) initWithColor: (NSString*) color weight : (double) weight;
@end
//FKApple.m
#import "FKApple.h"

@implementation FKApple
@synthesize color = _color;
@synthesize weight = _weight;
- (id) initWithColor:(NSString *)color weight:(double)weight {
    
    
    if (self = [super init]) {
    
    
        self.color = color;
        self.weight = weight;
    }
    return self;
}
- (NSString*) description {
    
    
    return [NSString stringWithFormat: @"<FKApple[_color = %@, _weight = %g]>", self.color, self.weight];
}
@end
//主函数
#import <Foundation/Foundation.h>
#import "FKApple.h"
int main(int argc, const char * argv[]) {
    
    
    @autoreleasepool {
    
    
        FKApple* a = [[FKApple alloc] initWithColor:@"红色" weight:5.68];
        NSLog(@"%@" , a);
    }
}

效果:
在这里插入图片描述

从上面的运行结果可以看出,通过重写FKApple类的description方法,就可以让系统在打印FKApple对象时打印出该对象的“自我描述”信息。

Guess you like

Origin blog.csdn.net/weixin_50990189/article/details/117456593