Боюсь, это немного абстрактный вопрос.Я в основном пишу игру для iPhone, которая вращается вокруг домашнего животного, например, тамагочи.Я создал объект Pet, который содержит все данные, относящиеся к статусу Pet.Остальная часть программы получает доступ к данным питомца и выполняет соответствующие действия.
Животное сохраняется в файл с использованием методов encodeWithCoder и initWithCoder.Таким образом, всякий раз, когда метод в программе должен получить доступ к любым данным о питомце, он создает новый экземпляр питомца, загружая его из файла.Если какие-либо изменения сделаны, они сделаны в пределах методов класса Pet.Эти методы всегда заканчиваются записью Pet в файл.
Итак, когда программа работает, она постоянно записывает в файл и читает из файла каждый раз, когда вносятся изменения.Если я затем захочу добавить новую переменную в Pet, скажем, переменную BOOL с именем showReaction (чтобы определить, следует ли показывать реакцию Pet на определенное событие, скажем), я должен включить эту переменную в оба метода encodeWithCoder и initWithCoder,Это кажется немного громоздким, поскольку эти методы, следовательно, становятся все больше и больше.И постоянное чтение и запись в файл кажется неэффективным.
Я бы подумал, что лучшим подходом было бы иметь глобальную переменную, которая представляет Pet.И что любой метод в программе может получить доступ к этой глобальной переменной, чтобы изменить ее.Единственный раз, когда я пишу в файл, это когда игрок выходит из игры, и я только читаю из файла один раз, когда игра загружается.
Мой вопрос - я не совсем уверен в том, как лучше к этому подойти.И действительно ли это хорошая практика программирования?Должен ли я объявить глобальную переменную в моем главном ViewController, а затем воздерживаться от ее освобождения во время работы программы?Смогу ли я изменить переменные в классе Pet и сохранить эти данные во время работы программы.Т.е. установка showReaction в TRUE в одном методе, чтение его в другом методе и установка в FALSE в другом методе ...
Любой совет будет высоко ценится.Я уже некоторое время пишу эту программу, и мне интересно, стоит ли мне вносить эти изменения сейчас, прежде чем я буду усваивать какие-либо дурные практики.Но учитывая размер моего кода, я не хочу слишком много экспериментировать без предварительной проверки с экспертами!
Спасибо,
Майкл