У меня есть объектпотери данных при переходе объекта
@interface QuestionViewModel : NSObject
@property (nonatomic, assign) NSInteger questionId;
@property (nonatomic, strong) NSString *questionText;
@property (nonatomic, assign) NSInteger questionNumber;
@property (nonatomic, strong) NSArray *choices;
@property (nonatomic, strong) QuestionViewModel *nextQuestion;
@property (nonatomic, strong) QuestionViewModel *previousQuestion;
@end
Я знаю, когда я заполнить этот объект является успешным и все свойства полностью и правильно инициализированы.
Однако, когда я прохожу этот объект так:
* Это другой класс (не в NSObject определено выше).
@property (nonatomic, strong) QuestionViewModel *currentQuestion;
- (void)nextQuestion
{
[self loadQuestion:self.currentQuestion.nextQuestion];
}
- (void)loadQuestion:(QuestionViewModel *)question
{
self.currentQuestion = question;
.
.
.
}
question.nextQuestion
и question.previousQuestion
являются nil
.
Почему при передаче этого объекта последующие объекты (nextQuestion и previousQuestion) становятся нулевыми? Похоже, что объект делает мелкую копию, а не глубокую копию, но не уверен.
Кажется, что есть что-то основополагающее, о котором я не знаю.
Объект не копируется вообще. 'question' указывает на вопрос, и этот указатель присваивается' currentQuestion'. Проверьте в 'nextQuestion' значения' self.currentQuestion', 'self.currentQuestion.nextQuestion' и' self.currentQuestion.nextQuestion.nextQuestion'. – Willeke
self.currentQuestion.nextQuestion.nextQuestion - это нуль. self.currentQuestion.nextQuestion действителен для первого вопроса в списке, но для всех остальных вопросов. – tentmaking
Я думаю, что тот факт, что вы создаете свойства (nextQuestion, previousQuestion) того же самого объекта, что он сам (QuestionViewModel), создает какую-то рекурсивную проблему. Это довольно запутанно, как стратегия. Может быть, лучше хранить nextQuestion и previousQuestion в качестве отдельных экземпляров класса и соответствующим образом обновлять их в любом классе, который вы им создаете? – Alex