Использование глобальной переменной против чтения и записи в файл - PullRequest
2 голосов
/ 12 июля 2010

Боюсь, это немного абстрактный вопрос.Я в основном пишу игру для iPhone, которая вращается вокруг домашнего животного, например, тамагочи.Я создал объект Pet, который содержит все данные, относящиеся к статусу Pet.Остальная часть программы получает доступ к данным питомца и выполняет соответствующие действия.

Животное сохраняется в файл с использованием методов encodeWithCoder и initWithCoder.Таким образом, всякий раз, когда метод в программе должен получить доступ к любым данным о питомце, он создает новый экземпляр питомца, загружая его из файла.Если какие-либо изменения сделаны, они сделаны в пределах методов класса Pet.Эти методы всегда заканчиваются записью Pet в файл.

Итак, когда программа работает, она постоянно записывает в файл и читает из файла каждый раз, когда вносятся изменения.Если я затем захочу добавить новую переменную в Pet, скажем, переменную BOOL с именем showReaction (чтобы определить, следует ли показывать реакцию Pet на определенное событие, скажем), я должен включить эту переменную в оба метода encodeWithCoder и initWithCoder,Это кажется немного громоздким, поскольку эти методы, следовательно, становятся все больше и больше.И постоянное чтение и запись в файл кажется неэффективным.

Я бы подумал, что лучшим подходом было бы иметь глобальную переменную, которая представляет Pet.И что любой метод в программе может получить доступ к этой глобальной переменной, чтобы изменить ее.Единственный раз, когда я пишу в файл, это когда игрок выходит из игры, и я только читаю из файла один раз, когда игра загружается.

Мой вопрос - я не совсем уверен в том, как лучше к этому подойти.И действительно ли это хорошая практика программирования?Должен ли я объявить глобальную переменную в моем главном ViewController, а затем воздерживаться от ее освобождения во время работы программы?Смогу ли я изменить переменные в классе Pet и сохранить эти данные во время работы программы.Т.е. установка showReaction в TRUE в одном методе, чтение его в другом методе и установка в FALSE в другом методе ...

Любой совет будет высоко ценится.Я уже некоторое время пишу эту программу, и мне интересно, стоит ли мне вносить эти изменения сейчас, прежде чем я буду усваивать какие-либо дурные практики.Но учитывая размер моего кода, я не хочу слишком много экспериментировать без предварительной проверки с экспертами!

Спасибо,

Майкл

Ответы [ 2 ]

1 голос
/ 12 июля 2010

Почему бы вам не создать синглтон?Таким образом, вашему коду не нужно будет беспокоиться о том, как это делается.Попробуйте отделить ваш код.

0 голосов
/ 12 июля 2010

Я думаю, что на абстрактном уровне немного сложно сказать, что лучше в вашем случае, но часто то, что кажется более простым, часто является лучшим подходом. Иметь глобальный экземпляр, с которым вы взаимодействуете, кажется довольно простым способом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...