gpt4 book ai didi

objective-c - 静态变量和类扩展中的变量有什么区别?

转载 作者:搜寻专家 更新时间:2023-10-30 19:57:52 27 4
gpt4 key购买 nike

静态变量“声明变量 static 将其范围限制在类中 — 以及文件中实现的类部分”(Apple 文档)。

而且我认为在类扩展中定义的变量仅在定义它的类中具有限制范围。

那是相似的!

静态变量和类扩展中的变量有什么区别?

最佳答案

static 变量与定义它的文件相关联。无法从该文件外部访问它,并且在整个程序中只有一个地方为它创建存储空间。

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

类扩展中的变量在声明它的文件中的可见性同样受到限制,但它是一个实例 变量。您创建的类的每个实例都会附加一个新的存储空间。

如果您创建一个static 变量并从该类的多个实例中更改它的值,则每个实例都将看到相同的值。 ivar 不是这种情况——每个对象都可以更改并保留其自己的变量值。

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

关于objective-c - 静态变量和类扩展中的变量有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16382500/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com