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

时间:2015-08-25 20:33:56

标签: ios objective-c properties boolean

我有两个值,它们之间的关系将以两种不同的方式显示在我的主视图控制器中,具体取决于设置值的原因(代码中的位置)。我对这一点的尝试变得错综复杂,结果模糊不清,因为他们在偏远的班级中单独计算了数值。

所以我决定设置一个布尔标志,指示要检查的显示模式,并在主VC的final中进行相应的操作。

我的问题:

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

谢谢!所有帮助表示赞赏!

2 个答案:

答案 0 :(得分:1)

我经常创建一个单独的类,当应用程序启动时加载,例如AppSharedData,对于这种情况,每当我遇到我必须使用在不同类中设置或操作的变量的情况时,我将其设置为公共属性这里的AppShareData就是一个小例子:

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

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

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

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

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

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

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

答案 1 :(得分:0)

确定 -

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

事实证明,至少在这种特殊情况下,答案是通过授权将旗帜传回,我已经在五个案件中的3个案件中使用过。我刚刚修改了委托方案以包含其他两个案例,一切都已落实到位。

长时间回应道歉 - 我不得不离开一个无关的母校。

再次感谢!