静态变量“声明变量静态限制其作用域仅限于类-以及类中实现的部分”(Apple )。
我认为在类扩展中定义了一个变量,只有类定义了一个限制作用域。
那是相似的!
静态变量和变量在类扩展中有什么不同?
发布于 2013-05-05 08:06:26
static变量绑定到它在其中定义的文件。它不能从该文件外部访问,而且在整个程序中只有一个为它创建的存储位置。
关于存储的区别也适用于非静态全局变量--程序中只有一个。
类扩展名中的变量对于声明它的文件的可见性也同样受到限制,但它是一个实例变量。在您创建的类的每个实例上都有一个新的存储段。
如果您创建一个static变量并将其值从类的几个实例中更改,那么每个实例都会看到相同的值。对于ivar来说,情况并非如此--每个对象都可以为该变量更改和保留自己的值。
(这就是为什么有时在static中使用ObjC变量来模拟其他语言中存在的类变量的原因。)
https://stackoverflow.com/questions/16382500
复制相似问题