1

我在视图控制器 A 中定义了一个属性

  @property (nonatomic) BOOL updateOnServer;

并合成它,给它赋值,然后我尝试从另一个视图控制器 B 访问这个变量,就像这样

  A * view = [[A alloc] init];

  if (view.updateOnServer)

但它不起作用。updateOnServer 始终为“否”。

有人知道如何解决这个问题吗?

4

3 回答 3

3

updateOnServer在 viewControllerA 中设置,并在 viewControllerB 中创建一个updateOnServer您没有设置任何内容的新实例。所以它采用BOOL的默认值,即NO。

在这里寻找可能的解决方案。

你有很多方法可以做:使变量成为全局变量、静态变量、单例变量、作为参数传递、作为通知发布。

于 2013-02-25T08:47:18.990 回答
2

NSUserDefaults 是一种保存和检索变量信息的简单方法,虽然有时不受欢迎。
使用 NSUserDefaults 查看链接了解如何使用 NSUserDefaults。或者您可以声明全局变量。

于 2013-02-25T08:58:34.547 回答
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;
于 2013-02-25T09:27:26.970 回答