访问一个 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,所以它在应用程序的生命周期中只创建一次,所以 :
- 您不必担心内存分配过多。
- 这保证变量是共享的(即,如果您在一个 class 中编辑一个变量,然后在另一个 class 中检索它的值,它将是新值)。
好的--
首先,非常感谢阅读的人,尤其是回复的人。这些信息和示例很有启发性。
事实证明,至少在这个特殊情况下,答案是通过委托传回标志,我已经在相关的五个案例中的三个案例中使用了它。我刚刚修改了委托方案以包括其他两种情况,一切就绪。
抱歉回复时间太长了——我不得不离开一个不相关的话题。
再次感谢!
我有两个值,它们之间的关系将以两种不同的方式显示在我的主视图控制器中,具体取决于值设置的原因(代码中的位置)。由于在遥远的 类.
中单独计算值,我对这一点的尝试变得令人费解并且结果模棱两可。所以我决定设置一个布尔标志,指示要检查的显示模式,并在主 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,所以它在应用程序的生命周期中只创建一次,所以 :
- 您不必担心内存分配过多。
- 这保证变量是共享的(即,如果您在一个 class 中编辑一个变量,然后在另一个 class 中检索它的值,它将是新值)。
好的--
首先,非常感谢阅读的人,尤其是回复的人。这些信息和示例很有启发性。
事实证明,至少在这个特殊情况下,答案是通过委托传回标志,我已经在相关的五个案例中的三个案例中使用了它。我刚刚修改了委托方案以包括其他两种情况,一切就绪。
抱歉回复时间太长了——我不得不离开一个不相关的话题。
再次感谢!