从UIViewController更改AppDelegate的属性不起作用

我遇到了一个在AppDelegate内部的问题,我创build了一个属性来在应用内共享值。

 @property (nonatomic, retain) User *currentUser; 

User对象的定义是

 @property int points; @property (nonatomic, copy) NSString *userName; 

我有一个显示当前用户名的字段的UIViewController A. 点击一个button将调出UIViewController B和里面的UIVIewController B,我尝试更改值:

 // I print out these two values here 1 ((AppDelegate*)[UIApplication sharedApplication].delegate).currentUser.userName= @"newName" ; ((AppDelegate*)[UIApplication sharedApplication].delegate).currentUser.points= 19 ; // I print out these two values here 2 

从1和2打印输出, userName已成功更改。 但是,当我从B传递控件回到A时,UIViewController A中的userName字段尚未更新。 在我的ViewController A中,我有:

 - (void)viewWillAppear:(BOOL)animated{ textField.text = ((AppDelegate*)[UIApplication sharedApplication].delegate).currentUser.userName; } 

有任何想法吗?

关心锤子


UPDATE

更奇怪的是,第一行打印0,第二行13,第三行0和最后一行13.看起来像分配从来没有工作。 用户ID被定义为@property int userId;

 NSLog(@"BeforeLogin:%d",((AppDelegate*)[UIApplication sharedApplication].delegate).currentUser.userId); NSLog(@"newUser.userId:%d",newUser.userId); // update profile locally ((AppDelegate*)[UIApplication sharedApplication].delegate).currentUser.userId= newUser.userId ; NSLog(@"AfterLogin:%d",((AppDelegate*)[UIApplication sharedApplication].delegate).currentUser.userId); NSLog(@"newUser.userToken:%@",newUser.userToken); 

User.h

 #import <Foundation/Foundation.h> @interface User : NSObject<HttpClientDelegate> @property int userId; // I also try @property (assign, nonatomic, readwrite) int userId; 

你应该改变你的财产定义,例如,

这个

 @property (nonatomic, copy) NSString *userName; 

有了这个

 @property (nonatomic, strong) NSString *userName; 

还要看看如何定义属性的例子