我有一系列专门用于在导航堆栈中进行配置文件编辑的 VC。随着您深入,自定义对象userProfile被传入-prepareForSegue
。我的问题是在此配置中,所有 userProfiles 似乎都指向一个对象,如果在对当前配置文件进行更改后按下后退按钮,则父控制器中的配置文件也会更改。
- (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 方法,因为它没有?