我有两个值,它们的相互关系将以两种不同的方式显示在主视图控制器中,这取决于设置值的原因(代码中的位置)。关于这一点,我的尝试变得有些费解,并且由于在遥远的类中单独计算值,因此结果模棱两可。
因此,我决定在主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是一个单例类,因此在应用程序的生命周期中仅创建一次,因此:
您不必担心内存分配过多。
这样可以保证变量是共享的(即如果您在一个类中编辑一个变量然后在另一个类中检索它的值,它将是新值)。