【问题标题】:isMemberOfClass vs comparing classes with ==isMemberOfClass 与使用 == 比较类
【发布时间】:2011-03-08 18:37:15
【问题描述】:

两者之间有什么真正的区别:

id value;
BOOL compare1 = [value isMemberOfClass:[SomeClass class]];
BOOL compare2 = [value class] == [SomeClass class];

检查value 是否是SomeClass 对象?

【问题讨论】:

  • 在我看来 isMemberOfClass 也适用于派生类。不过我不知道 Cocoa,所以如果我错了,请不要杀了我。
  • @Jouke,没有杀戮,但你把它和isKindOfClass: 混淆了(that 也是接受派生类的那个)——isMemberOfClass: 检查仅限特定会员(诚然,这是一种非常罕见的需求;-)。

标签: objective-c cocoa class rtti dynamic-cast


【解决方案1】:

如果valueNSProxyisMemberOfClass: 将正确检查代理对象,我相信另一个构造不会(我认为它会笨拙地复制isProxy:)。

【讨论】:

  • 是的——你是对的(我忘了 NSProxy)。删除了我的答案。使用isMemberOfClass:,因为它总是正确的,而== 有孔。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-10
  • 1970-01-01
  • 2019-11-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多