我在视图控制器 A 中定义了一个属性
@property (nonatomic) BOOL updateOnServer;
并合成它,给它赋值,然后我尝试从另一个视图控制器 B 访问这个变量,就像这样
A * view = [[A alloc] init];
if (view.updateOnServer)
但它不起作用。updateOnServer 始终为“否”。
有人知道如何解决这个问题吗?
我在视图控制器 A 中定义了一个属性
@property (nonatomic) BOOL updateOnServer;
并合成它,给它赋值,然后我尝试从另一个视图控制器 B 访问这个变量,就像这样
A * view = [[A alloc] init];
if (view.updateOnServer)
但它不起作用。updateOnServer 始终为“否”。
有人知道如何解决这个问题吗?
您updateOnServer
在 viewControllerA 中设置,并在 viewControllerB 中创建一个updateOnServer
您没有设置任何内容的新实例。所以它采用BOOL的默认值,即NO。
请在这里寻找可能的解决方案。
你有很多方法可以做:使变量成为全局变量、静态变量、单例变量、作为参数传递、作为通知发布。
NSUserDefaults 是一种保存和检索变量信息的简单方法,虽然有时不受欢迎。
使用 NSUserDefaults 查看链接了解如何使用 NSUserDefaults。或者您可以声明全局变量。
您始终可以使用单例类,如下所示:
创建一个新类,如下所示:
ServerCheck.h
#import <Foundation/Foundation.h>
@interface ServerCheck : NSObject
{
BOOL updateOnServer;
}
@property (nonatomic) BOOL updateOnServer;
+ (id)sharedSingletonController;
@end
ServerCheck.m
#import "ServerCheck.h"
@implementation ServerCheck
@synthesize updateOnServer
+(ServerCheck*)sharedSingletonController{
static ServerCheck *sharedSingletonController;
@synchronized(self) {
if(!sharedSingletonController){
sharedSingletonController = [[ServerCheck alloc]init];
}
}
return sharedSingletonController;
}
-(id)init{
self = [super init];
if (self != nil) {
}
return self;
}
@end
您可以按如下方式访问 BOOL 值:
ServerCheck *serverData = [ServerCheck sharedSingletonController];
serverData.updateOnServer = YES;