What you're doing should work. Also have you thought about protocol and delegate? You may want to consider this design pattern in the event that you want the NewViewController (or other view controllers) to be notified when the User object has changed (KVO/Notificaiton are another design patterns).
User.h
@class User;
@protocol userProtocol <NSObject>
-(void) userObjectDidGetUpdated:(User*) u;
@end
@interface User:NSObject {}
@property (nonatomic,weak) id <userProtocol> delegate; // use weak here to prevent reference cycle
@end
User.m -- call notifyDelegatesUserObjectHasChanged when you want to notify the delegates to get the updated User object
@implementation
@synthesize delegate;
-(void) notifyDelegatesUserObjectHasChanged {
[[self delegate] userObjectDidGetUpdated:self];
}
@end
Now, you can register the view controller to get the updated User object as follow...
NewViewController.h
#import "User.h"
@interface NewViewController:UIViewController <userProtocol> {}
NewViewController.m
@implementation
-(void) userObjectDidGetUpdated:(User*) u {
// this callback method will get called when the User object changes
}
@end