外部变量不更新

时间:2010-12-11 09:40:23

标签: iphone objective-c uiviewcontroller external

我正在尝试设置布尔值。我可以成功设置它,但是,在另一个类中,反映的更改不会显示。

以下是一个例子:

File1中:

@implementation ClassOne //UIViewController

extern BOOL theValue;

- (void)loadFile {
    theValue = YES;
}
...
@end

文件2:

@implementation ClassTwo //UIViewController
BOOL theValue;
- (void)switchValueChanged {
    theValue = NO;
}


@end

我最初在第一类中设置了值,初始值为YES。但是,当我将ClassTwo中的值设置为等于NO并返回ClassOne时,该值仍为YES。

我有点卡住了。你会认为它会更新。但事实并非如此。

任何帮助表示感谢。

3 个答案:

答案 0 :(得分:0)

完成所需内容的最简单方法是在appDelegate的接口文件中声明BOOL:

@interface AppDelegate : ....
{
  BOOL theValue;
}

@property BOOL theValue;

然后从ClassOne或ClassTwo,您可以直接获取/设置变量:

MyAppDelegate *appDelegate = (MyAppDelegate * )[[UIApplication sharedApplication] delegate];
appDelegate.theValue = YES;

OR

如果你真的想要访问全球,只需在<{1}}块

之前声明变量之外
@interface ... @end

然后,只需导入AppDelegate头文件,即可从代码中的任何位置访问变量BOOL theValue @interface AppDelegate : ... { ... }

theValue

答案 1 :(得分:0)

看起来你最好使用Singleton Design Pattern ... http://www.galloway.me.uk/tutorials/singleton-classes/

答案 2 :(得分:0)

我明白了。当我的应用程序启动时,它默认将theValue设置为YES。问题是我正在使用viewWillAppear:animated方法,每次ClassTwo的视图被解除时,viewWillAppear:animated方法被调用并且被设置的值已被重置。我将方法更改为viewDidLoad,一切正常。