gpt4 book ai didi

ios - Xcode 5 单元测试看到错误的类

转载 作者:行者123 更新时间:2023-12-01 19:03:24 26 4
gpt4 key购买 nike

我遇到了一个奇怪的情况,单元测试的执行与一段代码的正常执行不同。

特别是,我正在使用一个名为 JSONModel 的库,当我尝试从 JSON 字符串反序列化对象时,当我逐步执行测试用例时,特别是一行会导致问题:

if ( [[property.type class] isSubclassOfClass:[JSONModel class]] ) ...

如果我在此行之前(或之后)放置断点并执行:
expr [[property.type class] isSubclassOfClass:[JSONModel class]]

...在调试器中,它打印 \x01作为值(即真),但是当我实际执行指令指针时,它的行为就好像它是假的,而是进入 else block 。同样,在调试器中输入表达式再次显示它为真,即使仍然如此。

我很好奇是否有人以前见过类似的行为并对可能出现的问题有任何建议。我很确定我没有包含任何不同的定义,除非 Xcode 有不同的内部 cocoa 类实现进行测试。

更新:这里有一些更奇怪的证据:我添加了一些 NSLog语句来了解执行是如何看待事物的。如果我登录 property.type.superclass我得到 JSONModel返回(如预期的那样);但是,如果我登录 property.type.superclass == [JSONModel class]我得到 false !

对我来说,这表明单元测试执行所看到的 JSONModel 在某种程度上是我在运行时看到的不同的 JSONModel 类(以及它应该看到的)。但是,这是如何发生的,我无法弄清楚。

这可能是由前向类声明或类似的东西引起的吗?

最佳答案

好吧,我似乎通过实验发现了一个“解决方案”。事实证明,如果我替换 [JSONModel class]NSClassFromString(@"JSONModel")它可以游泳!

现在为什么会这样,我不能说,并且会给谁能解释它的答案!

关于ios - Xcode 5 单元测试看到错误的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21394919/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com