Интересно, для чего это руководство:
1 - как часто я могу читать из NSUserDefaults
довольно регулярно. ожидать, что издержки по умолчанию будут похожи на потокобезопасный NSDictionary
2 - сколько данных я могу разумно хранить в NSUserDefaults
физически, больше, чем вам нужно. логический максимум - насколько быстро вам это нужно и сколько места занимает диск. также помните, что это представление читается и записывается на диск при запуске / выключении и в другое время.
Если в моей игре есть возможность, чтобы компьютер был одним из игроков, я буду использовать NSUserDefaults для сохранения этого логического значения. Это очень ясно. Но также разумно ли получать доступ к NSUserDefaults во время моей игры каждый раз, когда я хочу знать, является ли компьютер игроком или я должен использовать вместо этого переменную экземпляра?
просто добавьте const bool
к объекту противника. нулевая потеря времени выполнения, кроме памяти, которая не будет существенной.
Предположим, мне нужно проверять это логическое значение каждую секунду. Ответ тот же: вместо 100 мс? Как насчет каждые 10 с?
опять же, это как потокобезопасный NSDictionary (хеширование). это будет довольно быстро и достаточно быстро для чтения на этой частоте. лучший ли это дизайн или нет, зависит от программы. если оно станет огромным, то да, производительность пострадает.
Если в моей игре 50 движущихся объектов, и я хочу, чтобы их позиции и скорости сохранялись при выходе из приложения, является ли NSUserDefaults разумным местом для хранения этих данных? Как насчет 20 движущихся объектов? Как насчет 200?
это будет хорошо, хотя я не буду читать / писать через пользовательские настройки по умолчанию во время игры; просто сохраните / загрузите состояние по мере необходимости.
Я не рекомендую сохранять все это по умолчанию. просто создайте представление файла для состояния вашей игры и используйте пользовательские настройки по умолчанию для того, для чего она предназначена. если он огромен и вы часто пишете в него, то реализация может регулярно сбрасывать состояние на диск, что может занять относительно много времени.