isKindOfClass和isMemberOfClass之间的区别

本文深入探讨了Objective-C与Swift在iOS开发领域的应用,通过实例解析了两者在性能、语法特性和社区支持等方面的差异,帮助开发者更好地选择适合自己的编程语言。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载于:http://blog.youkuaiyun.com/onlyou930/article/details/7306148


1,
isKindOfClass: Returns a Boolean value that indicates whether the receiver is an instance of given class or an instance of any class that inherits from that class.

isMemberOfClass: Returns a Boolean value that indicates whether the receiver is an instance of a given class.

isKindOfClass和isMemberOfClass之间的区别是:
我们可以使用isKindOfClass来确定一个对象是否是一个类的实例,或者是该类祖先类的实例。
isMemberOfClass只能用来判断前者,不能用来判断后者。

可以说:isMemberOfClass不能检测任何的类都是基于NSObject类这一事实,而isKindOfClass可以。

以下为自己总结:

[Kitty class] ---用来获取对象的类


@interface SonKitty : Kitty

@property (nonatomic, assign) int age;

@end

...

//子类的对象调用子类方法的实现

    SonKitty *son = [[SonKitty alloc] init];

    [son print];


    

    UIView *v = [[UIView alloc] init];

    NSLog(@"%@", v);

...

//isKindOfClass匹配子类和父类的对象

//isMemberOfClass严格匹配类型


    if (![v isKindOfClass:[Kitty class]]) {

        NSLog(@"v is not a kind of Kitty");

    }

    else {

        NSLog(@"v is a kind of Kitty");

    }

    

    if (![v isMemberOfClass:[Kitty class]]) {

        NSLog(@"v is not a member of Kitty");

    }

    else {

        NSLog(@"v is a member of Kitty");

    }

    

    if (![son isKindOfClass:[Kitty class]]) {

        NSLog(@"son is not a kind of Kitty");

    }

    else {

        NSLog(@"son is a kind of Kitty");

    }

    

    if (![son isMemberOfClass:[Kitty class]]) {

        NSLog(@"son is not a member of Kitty");

    }

    else {

        NSLog(@"son is a member of Kitty");

    }

输出结果:

2014-08-04 22:22:28.929 NSObjectApp2[35028:1575681] v is not a kind of Kitty

2014-08-04 22:22:28.930 NSObjectApp2[35028:1575681] v is not a member of Kitty

2014-08-04 22:22:28.930 NSObjectApp2[35028:1575681] son is a kind of Kitty

2014-08-04 22:22:28.931 NSObjectApp2[35028:1575681] son is not a member of Kitty


2,

//本质上,用%@打印对象的时候,打印的是该对象调用description方法所返回的字符串

    NSLog(@"%@:%@", [son description], son);

2014-08-04 22:22:28.927 NSObjectApp2[35028:1575681] <SonKitty: 0xae0af60> 这里是SonKitty: 0!:<SonKitty: 0xae0af60> 这里是SonKitty: 0!

可以看出输出结果是一样的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值