我在viewcontroller A中定义了一个属性
@property (nonatomic) BOOL updateOnServer;
并合成它,给它值,然后我尝试从另一个viewcontroller B访问这个变量
A * view = [[A alloc] init];
if (view.updateOnServer)
但它不起作用。 updateOnServer始终为NO。
有人知道如何解决这个问题吗?
答案 0 :(得分:3)
您在viewControllerA中设置了updateOnServer
,并在viewControllerB中创建了一个未设置为任何内容的新updateOnServer
实例。因此它采用默认值BOOL为NO。
请查看here以寻求可能的解决方案。
你有很多方法可以做:将变量设为global,static,singleton,pass作为参数,post as notification。
答案 1 :(得分:2)
保存和检索变量信息的一种简单方法是NSUserDefaults,但不是首选。 使用NSUserDefaults查看Link以了解如何使用NSUserDefaults。 或者您可以声明全局变量。
答案 2 :(得分:1)
您可以始终使用单身类,如下所示:
按如下方式创建一个新类:
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;