У меня есть несколько полезных методов для физических расчетов, таких как ускорение / замедление, скорость и некоторые другие.
Большинство из них требуют как минимум двух измерений по времени. Поэтому каждый раз, когда я хочу использовать их, мне приходится реализовывать в моем объекте несколько переменных экземпляра, которые требуют вычисления, например, для вычисления ускорения.
Например, везде, где мне нужно рассчитать ускорение, я включаю SLPhysics.h и пишу в своем коде:
double acceleration = [SLPhysics + calculateAccelerationForFirstMeasuredSpeed:v1 secondMeasuredSpeed:v2 firstMeasuredTime:t1 secondMeasuredTime:t2];
Это отлично работает. Но я бы предпочел способ, который ведет себя как Core Animation, где большинство деталей для выполнения того, что должно быть сделано, скрыто от пользователя класса.
Итак, чтобы я не мог заставить переменные экземпляра запоминать последние измеренные значения v1 и t1, я бы предпочел простой вызов:
double acceleration = [SLPhysics + calculateAccelerationForMeasuredSpeed:v measuredTime:t context:self];
Обратите внимание на параметр контекста. Я думаю, что это путь. Но в настоящее время я не имею большого представления о том, как эти методы класса могут иметь доступ к структуре данных, например, к NSMutableDictionary. Если бы я сделал переменные экземпляра, метод класса не имел бы доступа. Если я сделаю это методом экземпляра, его использование будет уродливым и трудным для чтения, а пользователю будет мешать управление памятью и другие вещи. Также все это распределение и инициализация могут стоить слишком дорого (я думаю). Я имею в виду ... посмотрите на Core Animation. Это так просто! Я хочу то же самое для этого. Но у них тоже была эта проблема, я думаю. Они должны помнить некоторые вещи. Продолжительность анимации, контекст и т. Д.
Я думал о записи значений в файл, но это слишком дорого. Я мог бы использовать SQLite. Слишком дорогие операции, вероятно. Эти методы могут использоваться в местах, где требуется от 5 до 100 вычислений в секунду. Есть такие вещи, как «переменные класса»?