OC高效率52之理解“类”对象的用意

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    //在程序中不要直接比较对象所属的类,明智的做法是调用“类信息查询方法”
    //可以正确处理那些使用了消息传递机制的对象
    
    //oc中对象的本质:对象实例都是指向某块内存数据的指针
    NSDictionary *dic = [NSDictionary new];
    dic = @{@"11":@"11"};
    UIView *view = [[UIView alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];
    [self.view addSubview:view];
    NSLog(@"%d",[dic isMemberOfClass:[NSDictionary class]]);//判断出对象是否为某个特定类的实例 0 ??????为什么是否?
    NSLog(@"%d",[dic isMemberOfClass:[NSMutableDictionary class]]);//0
    NSLog(@"%d",[dic isKindOfClass:[NSDictionary class]]);//判断出对象是否为某类或其派生类的实例  1
    NSLog(@"%d",[dic isKindOfClass:[NSMutableDictionary class]]);//0
    NSLog(@"%d",[dic isKindOfClass:[NSArray class]]);// 0
    NSLog(@"%d",[view isMemberOfClass:[UIView class]]);//1
}
-(NSString *)commaSeparatedStringFromOnjects:(NSArray *)array
{
    NSMutableString *string =[NSMutableString new];
    for (id object in array)
    {
        if ([object isKindOfClass:[NSString class]])
        {
            [string appendFormat:@"%@,",object];
        }
        else if ([object isKindOfClass:[NSNumber class]])
        {
            [string appendFormat:@"%d,",[object intValue]];
        }
        else if ([object isKindOfClass:[NSData class]])
        {
//            NSString *base64Encode = /**/
//            [string appendFormat:@"%@,",base64Encode];
        }
        else
        {
        //type not 
        }
    }
    return string;
}


你可能感兴趣的:(OC高效率52之理解“类”对象的用意)