NSObject +(BOOL)是SubclassOfClass:方法返回错误的结果

时间:2014-11-04 22:39:52

标签: ios nsobject

我有三个类:ClassA,ClassB和ClassC。

ClassC继承自继承自ClassA的ClassB。

我正在尝试编写一个单元测试来验证ClassC是否继承自ClassB:

XCTAssertTrue([ClassC isSubclassOfClass:[ClassB class]]);

这会返回false。

XCTAssertTrue([ClassC isSubclassOfClass:[ClassA class]]);

返回true。

[ClassC class] superclass]

返回ClassB。

当我在控制台中测试[ClassC isSubclassOfClass:[ClassB class]]时,它也会返回true,即使我在单元测试中的代码在同一测试中返回false之前立即测试它也是如此!

任何人都可以解释这是怎么发生的吗?


我从评论中尝试了布莱恩的建议。从我的单元测试中记录我得到:

  

0x102a8c4e0 0x110d21820

我从控制台登录:

  

0x102a8c4e0 0x102a8c4e0

1 个答案:

答案 0 :(得分:2)

您可能已将某些类添加到应用目标和单元测试目标中。

您的课程应该只会添加到应用目标。

从您的编辑中,看起来它是ClassB的错误 - 但是值得检查所有这三个。

SenTest / XCTest使用测试工具,使应用程序中包含的类可用于测试,而无需明确包含其实现。

包括两者都给了你重复的类,这就是为什么他们有不同的内存地址。