在AppDelegate中更改var的值

时间:2012-01-05 05:16:21

标签: iphone ios5 uiapplicationdelegate

在我的AppDelegate中,我有

#import <UIKit/UIKit.h>
#import "CustomerProfile.h"
@interface AppDelegate : UIResponder <UIApplicationDelegate>

@property   (strong, nonatomic) UIWindow *window;
@property   (strong, nonatomic) int x;

@end

在B班,我做

AppDelegate *appDelegate        =   [[UIApplication  sharedApplication] delegate];
appDelegate.x   =   5;

然后在C班,我做

 AppDelegate *appDelegate        =   [[UIApplication  sharedApplication] delegate];
 appDelegate.x   =   4;

最后,在D级我打印出x和 x = 5 的结果。 x应 4 。 这令我感到困惑。请就此问题向我提出建议。 感谢

1 个答案:

答案 0 :(得分:6)

在你的App委托方法中你的属性x被设置为strong(也就是保留),你必须设置为assign,因为它不是一个对象,所以不能保留一个int var:

@property (assign, nonatomic, readwrite) int x; //then @synthesize in the implementation

其次,您必须导入appDelegate的标题(在B,C,D类中)

#import "yourAppDelegate.h" 

设置appDelegate实例:

yourAppDelegate *appDelegate = [[UIApplication sharedApplication]delegate]; // or [NSApplication sharedApplication] if your app it is for OS X

然后将x var设置为所需的值

appDelegate.x = 5 (or whatever)

我在我的一个项目和作品中对此进行了测试。