ios - NSObject +(BOOL)isSubclassOfClass : method returning wrong result

标签 ios nsobject

我有三个类(class):ClassA、ClassB 和 ClassC。

ClassC 继承自 ClassB,ClassB 继承自 ClassA。

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

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

这会返回 false。

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

返回真。

[ClassC class] superclass]

返回 B 类。

还要注意,当我在控制台中测试 [ClassC isSubclassOfClass:[ClassB class]] 时,它返回 true,即使我在单元测试中的代码返回 false 之前立即测试它测试!

谁能解释这是怎么发生的?


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

0x102a8c4e0 0x110d21820

从控制台记录我得到:

0x102a8c4e0 0x102a8c4e0

最佳答案

您可能已将一些类同时添加到您的应用目标和单元测试目标。

您的类(class)只能添加到应用程序目标中。

从您的编辑来看,似乎是 ClassB 出了问题 - 但值得检查所有三个。

SenTest/XCTest 使用测试工具,使应用中包含的类可用于测试,而无需显式包含它们的实现。

同时包含这两个类会为您提供重复的类,这就是它们具有不同内存地址的原因。

关于ios - NSObject +(BOOL)isSubclassOfClass : method returning wrong result,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26746419/

相关文章:

iphone - App Store审核多种应用内购买方法

ios - 付款 - IAP 或第三方

ios - NSObject 在加载 viewDidLoad() 之前似乎没有初始化

ios - 在 swift NSObject 子类中使用 CoreFoundation 对象时出现运行时错误

ios - NSObject 类工作

iphone - 如何为 UILabel 复制?

cocoa - 如何观察 NSObject 属性的变化

ios - 错误 :- Couldn't codesign Frameworks/libswiftCore. dylib:协同设计

html - iOS 中 textarea 上的 Shadow DOM 强制填充

ios - 代码 7 : AWS S3 Header file not found using Cocoa Pods