gpt4 book ai didi

iphone - 在两个 View Controller 之间共享一个 bool 变量/NSNUber

转载 作者:行者123 更新时间:2023-11-28 17:42:22 24 4
gpt4 key购买 nike

我有两个 View Controller ,我想在它们之间共享一个 bool 变量。所以我创建了一个 bool 变量,在两侧和一侧都带有 @propery (nonatomic, assign)

newVC.myBool1 = self.myBool2;

在另一个 View Controller 上,我可以读取传递的 bool 变量的值,但我需要在第二个 View Controller 上更改它,以便我可以在第一个 View Controller 上读取值。所以我知道,这是不可能的,因为 `bool* 它是原始类型。

所以我使用了NSNumber,但这也不起作用。在第一个 View Controller 上,我设置了 viewDidLoad

self.myBool1 = [NSNumber numberWithBool:NO];

在第二个 View Controller 上:

self.myBool2 = [NSNumber numberWithBool:YES];

但在第一个 View Controller 上,该值为 0 - 否...因此创建新的 NSNumber 似乎没有共享给第一个 View Controller 。

我该怎么做才能解决这个问题?问候蒂姆

最佳答案

您有很多选择,但您应该使用哪个取决于两个 viewController 是否需要在值更改时收到通知。

如果您不需要通知,最简单的选择是使用全局 BOOL 变量,尽管纯粹主义者会 mock 这个建议。但实际上它是两行代码,你就完成了。另一种选择是将值存储在 NSUserDefaults 中。

如果您需要在每个 viewController 中更改通知,也许最简洁的设计是在一个 viewController 中编写一个“set”方法,该方法在它自己和另一个 viewController 中设置值。像这样的东西:

-(void) setMyBool:(BOOL)newValue
{
myBool = newValue;
otherViewController.myBool = newValue;
}

如果你想从任一 viewController 更改值,它会变得有点棘手,因为你必须让每个 viewController 保持对另一个的引用,并确保在设置值时不要递归。像这样的东西:

-(void) setMyBool:(BOOL)newValue
{
if ( self.busyFlag == YES )
return;
self.busyFlag = YES;
myBool = newValue;
otherViewController.myBool = newValue;
self.busyFlag = NO;
}

另一种选择是使用 NSNotifications 来更改值并让每个 viewController 类监听更改通知。 TheEye 关于编写包装器类并在两个 viewController 中保留对该类实例的引用的建议也可以。

不过,如果您不需要更改通知,我会创建一个全局 BOOL 变量并继续处理应用程序的其余部分,因为它非常简单、可靠且不易出错。

关于iphone - 在两个 View Controller 之间共享一个 bool 变量/NSNUber,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7635029/

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