gpt4 book ai didi

ios - 清除方法中的静态变量

转载 作者:行者123 更新时间:2023-12-01 17:39:49 25 4
gpt4 key购买 nike

在我的一种方法中,我正在使用dispatch_once,为此我创建了一个静态变量。该方法按预期工作,并且单独运行时,单元测试成功通过。但是当我一次运行所有测试时,其中一个测试失败,因为该值由方法内部的静态变量保存。

我的方法:

+ (NSString *)myMethod
{
static NSString *dayOfTheWeek;

static dispatch_once_t onceToken;

dispatch_once(&onceToken, ^{
// Do something.

dayOfTheWeek = @"Monday";

if (!dayOfTheWeek)
{
dayOfTheWeek = @"Sunday";
}
});

return dayOfTheWeek;
}

问题:

所以我有单元测试来测试“星期一”,另一个单元测试来测试“星期日”。如果我在XCODE上分别执行这两个测试,则这些测试将通过,但是当我一起执行它们时,“Sunday”的测试将失败,因为我的静态变量仍保持值为“Monday”。

有没有一种方法可以仅出于测试目的而清除方法级别的静态变量?还是有其他方法可以成功执行两个测试?

最佳答案

条件逻辑几乎永远不属于dispatch_once()块。如果在不同的执行中存在某种逻辑可能不同的逻辑,则可能需要对每个程序执行一次以上的重新评估。目前尚不清楚逻辑是什么,但是否类似“今天是什么?”那么,如果您的程序运行多天会怎样?

关于ios - 清除方法中的静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23788568/

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