对于iOS,我们总是要关注内存消耗。
我有一个可能有数百个实例的类,我还没能找到一个讨论,指出在实例方法中声明静态字典是否意味着该类的所有实例将共享同一个副本那个字典,或者每个实例都有自己的副本,这当然会破坏记忆。
顺便说一下,如果这是一个类方法而不是实例方法,答案会有什么不同吗?-(BOOL)doohickeyThing
{
static NSDictionary *someDictionary = [NSDictionary dictionaryWithObjectsAndKeys...
// more code here
}
感谢。
答案 0 :(得分:4)
根据定义,static
变量只有一个副本。无论您的班级有多少个实例,都只会有someDictionary
的一个副本。它将被初始化一次,每次使用该方法时,无论类实例如何,都将使用相同的精确字典实例。换句话说,它是共享的。
无论是实例方法还是类方法都是如此。