我有一系列专门用于导航堆栈中的配置文件编辑的VC。随着您的深入,自定义对象 userProfile 将在-prepareForSegue
中传递。我的问题是在这种配置中,所有userProfiles似乎都指向一个对象,如果在对当前Profile进行更改后按下后退按钮,则父控制器中的Profile也会更改。
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"ProfileToEdit"]) {
EditProfileTableViewController *editProfileVC = [segue destinationViewController];
editProfileVC.userProfile = self.userProfile;
editProfileVC.delegate = self;
}
每个VC都有一个在其中声明的属性,如下所示:.h文件:
@property (strong, nonatomic) UserProfile *userProfile;
其中userProfile是一个非常简单的类
@interface UserProfile : NSObject
@property (strong, nonatomic) NSMutableArray *cars;
@property (strong, nonatomic) NSString *phoneNumber;
@property (strong, nonatomic) NSString *name;
@property (strong, nonatomic) NSString *currentPassword;
@end
正如我所看到的,解决方案在于让每个控制器都拥有它自己的对象副本。 我不确定如何正确实现它。这会解决我的问题吗?
@property (copy, nonatomic) UserProfile *userProfile;
如果是,我应该如何在我的自定义对象中实现-copy方法,因为它没有?