我是iOS和Objective-C的新手,我已经知道在一个类中,你定义的类的属性只能在该类的“实例”中启动。
但Objective-C中是否有任何机制可以存储一些可以在类的类方法中使用的数据?
具体来说,我正在开发一个安静简单的RPN计算器应用程序。
根据斯坦福iOS编程开发(CS193P)的教程,我创建了名为RPNCalculatorBrain的RPN计算器控制器模型,并且有一个属性(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
来解释变量的值。
但我个人想改进这个方法,我只是想知道我是否可以在我的模型(CalculatorBrain)中存储Calculator的特殊操作(π,e)和变量(x),并给出一个类方法{{1}无论谁想要使用它。所以我可以在我的模型中存储有关计算的所有内容但据我所知,我无法存储可用于类方法的东西。
在NSUserDefault中存储此信息似乎不合适,我还没有阅读有关核心数据的文档。
我知道我的想法似乎是一种轻微的陌生和幼稚,我当然可以使用一些替代方法来做同样的工作,但我只是想知道它是否可行。谢谢!
如果我的描述让你们感到困惑,请原谅我!我的英文写作是......
答案 0 :(得分:1)
通常的方法是在类的实现文件中创建一个静态全局变量,然后在+initialize
类方法(see this question)中初始化它,或者在类似的东西中懒惰地初始化它到类级属性访问器。
但是,您描述的设计几乎所有内容都值得怀疑。如果您确实需要具有状态的全局可访问对象,则可以实现Singleton模式。即使这样,依赖注入也是一种更好的方法,因此您不必将自己与一个具体的实现结合起来。