访问一个 BOOL 标志设置在几个不同的可能 类

Accessing a BOOL flag set in several different possible classes

我有两个值,它们之间的关系将以两种不同的方式显示在我的主视图控制器中,具体取决于值设置的原因(代码中的位置)。由于在遥远的 类.

中单独计算值,我对这一点的尝试变得令人费解并且结果模棱两可。

所以我决定设置一个布尔标志,指示要检查的显示模式,并在主 VC 的 viewWillAppear 中相应地采取行动。

我的问题:

如何设置这样的布尔值?它应该是主视图控制器的 属性,然后在数字更改的每个点创建一个 VC 的实例吗?

谢谢!感谢所有帮助!

我通常会创建一个单例 class 在应用程序启动时加载,例如 AppSharedData 每当我遇到必须使用在不同 [=34 中设置或操作的变量时的情况=]是的,我将其设置为 AppShareData 的 public 属性 这是一个小示例:

AppSharedData.h :

@interface AppSharedData : NSObject
+(AppSharedData*)sharedInstance ;
@property (nonatomic) BOOL sharedBoolVariable ;
@end

AppSharedData.m :

@implementation AppSharedData
@synthesize sharedBoolVariable;
+(AppSharedData *) sharedInstance
{
   static AppSharedData *_sharedInstance = nil;
   static dispatch_once_t Token;
   dispatch_once(&Token, ^{
      _sharedInstance = [[AppSharedData alloc]init];
   });
   return _sharedInstance;
}
@end

然后,如果您想编辑任何 class 中的变量值,我将执行以下操作:

-(void)editMethod
{
   AppSharedData * dataObject = [AppSharedData sharedInstance] ; 
   dataObject = YES ; 
}

如果我想在任何 class 中检索变量的值,我会执行以下操作:

-(void)retrieveMethod
{
   AppSharedData * dataObject = [AppSharedData sharedInstance] ; 
   BOOL someVariableInMyClass = [dataObject sharedBoolVariable] ; 
}

当然,AppShareData 是一个单例 class,所以它在应用程序的生命周期中只创建一次,所以 :

  1. 您不必担心内存分配过多。
  2. 这保证变量是共享的(即,如果您在一个 class 中编辑一个变量,然后在另一个 class 中检索它的值,它将是新值)。

好的--

首先,非常感谢阅读的人,尤其是回复的人。这些信息和示例很有启发性。

事实证明,至少在这个特殊情况下,答案是通过委托传回标志,我已经在相关的五个案例中的三个案例中使用了它。我刚刚修改了委托方案以包括其他两种情况,一切就绪。

抱歉回复时间太长了——我不得不离开一个不相关的话题。

再次感谢!