在我的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 。 这令我感到困惑。请就此问题向我提出建议。 感谢
答案 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)
我在我的一个项目和作品中对此进行了测试。