gpt4 book ai didi

iphone - isKindOfClass 和 NSStringFromClass 不同意 UIApplicationDelegate

转载 作者:太空狗 更新时间:2023-10-30 03:19:10 26 4
gpt4 key购买 nike

我正在为 iPhone 应用程序进行简单的 OCUnit 测试,只是想断言应用程序委托(delegate)是我预期的类的实例。没想到这个测试非常有用,结果却暴露了我对Objective C的一个误解。

我首先获得对委托(delegate)的引用。然后我记录返回的类名。在我的例子中,输出正确地显示“app delegate 的类名是 CalculatorAppDelegate”。

然而,下一行的断言失败了,我不明白为什么。

- (void)testAppDelegate 
{
id appDelegate = [[UIApplication sharedApplication] delegate];
NSLog(@"app delegate's class name is %@", NSStringFromClass([appDelegate class]));
NSLog(@"is it kind? %i", [appDelegate isKindOfClass:[CalculatorAppDelegate class]]);
NSLog(@"is it member? %i", [appDelegate isMemberOfClass:[CalculatorAppDelegate class]]);
NSLog(@"class == class %i", [appDelegate class] == [CalculatorAppDelegate class]);
STAssertTrue([appDelegate isKindOfClass:[CalculatorAppDelegate class]], @"wtf");
}

什么情况会导致 NSStringFromClass() 返回正确的类名,而 isKindOfClass 返回 false?

2011-03-19 15:51:13.864 Calculator[40092:207] app delegate's class name is CalculatorAppDelegate
2011-03-19 15:51:13.864 Calculator[40092:207] is it kind? 0
2011-03-19 15:51:13.865 Calculator[40092:207] is it member? 0
2011-03-19 15:51:13.865 Calculator[40092:207] class == class 0
/Users/pohl/Developer/FoundationCalculator/CalculatorTests/CalculatorBrainTests.m:37: error: -[CalculatorBrainTests testAppDelegate] : "[appDelegate isKindOfClass:[CalculatorAppDelegate class]]" should be true. wtf
Test Case '-[CalculatorBrainTests testAppDelegate]' failed (0.002 seconds).

最佳答案

您没有正确配置测试目标。如果你关注了this guide for unit testing applications你应该有 3 个目标:CalculatorCalculatorTestsCalculatorTesting。检查 CalculatorTests 中的“构建阶段”部分。在“编译源”中,只有 SenTestCase 源文件应该列在那里。我猜你在那里添加了 CalculatorAppDelegate.m 和其他文件 - 这会导致相同源文件的重复程序集,然后在你构建 CalculatorTesting 目标。这解释了为什么您的断言失败。

编辑:刚刚意识到您不需要 Xcode 4 中的 CalculatorTesting 目标。只需转至项目 > 编辑方案...并确保单元测试 bundle 列在测试 部分。然后您可以使用 Cmd-U 运行单元测试。

关于iphone - isKindOfClass 和 NSStringFromClass 不同意 UIApplicationDelegate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5364074/

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