首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >静态变量和变量在类扩展中有什么不同?

问静态变量和变量在类扩展中有什么不同?
EN

Stack Overflow用户
提问于 2013-05-05 07:51:17
回答 1查看 880关注 0票数 3

静态变量“声明变量静态限制其作用域仅限于类-以及类中实现的部分”(Apple )。

我认为在类扩展中定义了一个变量,只有类定义了一个限制作用域。

那是相似的!

静态变量和变量在类扩展中有什么不同?

EN

回答 1

Stack Overflow用户

发布于 2013-05-05 08:06:26

static变量绑定到它在其中定义的文件。它不能从该文件外部访问,而且在整个程序中只有一个为它创建的存储位置。

关于存储的区别也适用于非静态全局变量--程序中只有一个。

类扩展名中的变量对于声明它的文件的可见性也同样受到限制,但它是一个实例变量。在您创建的类的每个实例上都有一个新的存储段。

如果您创建一个static变量并将其值从类的几个实例中更改,那么每个实例都会看到相同的值。对于ivar来说,情况并非如此--每个对象都可以为该变量更改和保留自己的值。

(这就是为什么有时在static中使用ObjC变量来模拟其他语言中存在的类变量的原因。)

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16382500

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档