gpt4 book ai didi

ios - isKindOfClass 为测试用例返回不同的值

转载 作者:行者123 更新时间:2023-11-29 12:21:51 26 4
gpt4 key购买 nike

我有一个方法someMethod。此方法在某些时候具有以下 if-else 条件。

- (void) someMethod {
// ... some more code ...
if ([userArray[0] isKindOfClass:[Me class]]) {
// some code
}
else {
// some other code
}
}

现在,当我正常执行代码时,这个 if 条件总是满足的。但是当我从我的一个测试用例中调用它时,反而执行了 else 部分。我以完全相同的方式调用此方法(它没有副作用等)。

当我在正常运行和测试运行中调试时。我看到了一些不同的东西。

在测试中运行时,userArray 有 1 个对象,(Me_Me_2 *)0x00007fa61d39dbf0。在正常运行时,userArray 具有相同的对象,但有一处不同。它说 (Me_Me_ *)0x00007fce71459ae0

当我打印 NSStringFromClass([userArray[0] class]) 的值时,它们都打印“Me”。

“我”是一个 NSManagedObject。

另一个有趣的事情是,如果我在调试器中添加一个表达式并对其求值,它总是求值为真 - ([((NSObject*)userArray[0]) isKindOfClass:[Me class]]) 返回 (bool)true。这太奇怪了!如果条件为真,为什么它会进入 else block ?

现在有一些问题-

  1. 这里发生了什么?在测试中运行时,Core Data 对象的处理方式是否不同?

  2. 为什么对象的类型在测试时是“Me_Me_2”,否则是“Me_Me_”?为什么不只是“我”?

最佳答案

这听起来类似于以下问题:isKindOfClass doesn't work as expected

简而言之,被比较的类是测试目标的目标成员吗?它应该只是应用程序的目标成员。

关于ios - isKindOfClass 为测试用例返回不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30405658/

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