• isKindOfClass和isMemberOfClass 区别


    isKindOfClass和isMemberOfClass 都是NSObject的比较Class的方法。
     
    但两个有很大区别:
    isKindOfClass来确定一个对象是否是一个类的成员,或者是派生自该类的成员。
    isMemberOfClass只能确定一个对象是否是当前类的成员。
     
    例如:
    NSArray *arr1 = [NSArrayarray];
    NSArray *arr2 = [NSArrayarray];
    NSObject *ob = [[NSObjectalloc] init];
     
    NSLog(@"%hhd", [[NSArrayarray] isKindOfClass:[NSObjectclass]]); // YES
    NSLog(@"%hhd", [[NSArrayarray] isMemberOfClass:[NSArrayclass]]); // NO
    NSLog(@"%hhd", [arr1 isKindOfClass:[ob class]]); // YES
    NSLog(@"%hhd", [arr1 isMemberOfClass:[ob class]]); // NO
    NSLog(@"%hhd", [arr1 isKindOfClass:[arr2 class]]); // YES
    NSLog(@"%hhd", [arr1 isMemberOfClass:[arr2 class]]); // YES
     
    [[NSArray array] isMemberOfClass:[NSArray class]]返回NO的原因在于NSArray是一个类簇,意味着每个NSArray的实例都是NSArray内部子类的一个实例,我们会发现[[NSArray array] class]返回值为__NSArray0, 而[NSArray class]返回值为NSArray,所以二者不等。
     
  • 相关阅读:
    设计模式——设计模式之禅day2
    和阿文一起学H5——音乐素材
    mysql数据库问题
    vue-cli脚手架工具
    webpack总结
    sql和nosql区别
    MongoDB基本命令
    >nbsp修改
    字典
    列表
  • 原文地址:https://www.cnblogs.com/lxd2502/p/5756317.html
Copyright © 2020-2023  润新知