Как сохранить свойство в классе, который можно использовать в методе класса? - PullRequest
0 голосов
/ 30 марта 2012

Я новичок в iOS и Objective-C, я уже знаю, что в классе определенное вами свойство класса может быть инициировано только в "экземпляре" этого класса.

Но есть ли механизмв Objective-C, который может хранить некоторые данные, которые могут быть использованы в методе класса класса?

Чтобы быть точным, я работаю над простым тихим приложением RPN Calculator.

И в соответствии сВ учебном руководстве по программированию для Stanford iOS (CS193P) я создаю модель RPN Calculator Controller под названием RPNCalculatorBrain, и в нем есть свойство (id)program и метод класса +(double)runProgram:(id)program.

(id)program - это массив массивов всех операндов и операций, введенных пользователем.

Преподаватель в этом классе предлагает использовать метод класса, чтобы другой класс (в ситуации этой программы, functionGraphMVC) мог передать (id)program этому методу класса и получить результат программы (или функции),Так что модель RPNCalculatorBrain можно сделать как можно более общей.

и есть еще один метод класса +(double)runProgram:(id) program using:(NSDictionary*)variableValues.это переменная версия вышеуказанного метода класса.Поэтому, если в id(program) есть переменная (X, a, b), этот метод класса может использовать (NSDictionary *)variableValues для интерпретации значения переменной.

Но лично я хочу улучшить этот метод, я простоИнтересно, могу ли я сохранить специальную операцию Калькулятора (π, e) И переменную (x) в моей модели (CalculatorBrain) и дать метод класса +(void)setXValue(); тому, кто захочет его использовать.Так что я могу хранить все о расчете в моей модели.Но, насколько я знаю, я не могу хранить что-то, что можно использовать в методе класса.

И хранить эту информацию в NSUserDefault кажется неуместным, И я еще не читал Документацию о базовых данных.

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

Если мое описание смущает вас, ребята, пожалуйста, прости меня!Я пишу по-английски ...

1 Ответ

1 голос
/ 30 марта 2012

Обычный подход к этому - создать статическую глобальную переменную в файле реализации вашего класса, а затем инициализировать его в методе класса +initialize ( см. Этот вопрос ) или инициализировать его лениво внечто похожее на средство доступа к свойствам на уровне класса.

Однако, почти все в дизайне, который вы описываете, сомнительно.Если вам действительно нужен глобально доступный объект с состоянием, вы можете реализовать шаблон Singleton.Даже тогда внедрение зависимостей было бы лучшим подходом, так что вы не привязываетесь к одной конкретной реализации повсюду.

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