我有两个值,它们的相互关系将以两种不同的方式显示在主视图控制器中,这取决于设置值的原因(代码中的位置)。关于这一点,我的尝试变得有些费解,并且由于在遥远的类中单独计算值,因此结果模棱两可。

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

我的问题:

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

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

最佳答案

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

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是一个单例类,因此在应用程序的生命周期中仅创建一次,因此:


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

08-04 22:08