ios - 头文件中的变量、内存管理

标签 ios objective-c header-files

在 iOS 中,如果我将一些 const 变量放入头文件中,然后通过包含此头文件在不同的源文件中使用它们,这些变量的生命周期是多少?这些变量什么时候分配/释放?这些变量存储在哪里?

最佳答案

你问:

What's the lifecycle of these variables?

全局变量的生命周期是针对应用程序的生命周期的。

When are these variables allocated/released?

在应用终止之前它们不会被释放。

Where are these variables stored?

如果您谈论的是原始数据类型或字符串文字,它们存储在专用的 __DATA 段中,而不是在堆中,也不是在堆栈中。


您不应该将 const 全局变量的实现放在 header 中。将它们放入 .m 文件中。仅将对它们的外部引用放入 .h 文件中。

例如,将以下内容放入您的 .m 文件中:

NSString * const kNotificationName = @"com.domain.app.notification";

然后,在您的 .h 文件中,输入:

extern NSString * const kNotificationName;

这样,您只需实现一次,但导入该 header 的任何文件都可以看到它。

关于ios - 头文件中的变量、内存管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46166206/

相关文章:

c++ - 有没有办法避免头文件中使用的 constexpr 函数在没有额外命名空间的情况下进入全局范围?

ios - 无法在设备上部署应用程序

iphone - iOS 5 : Is it possible to write a struct to a plist file?

ios - Swift:如何从我的应用程序打开本地 pdf 到 iBooks

objective-c - 如何从 NSIndexPath 获取特定值

C 头文件/源文件 - enum typedef

c++ - 在 C++ 中为 hxx 文件创建 cxx 文件

ios - 阻塞当前线程,直到部分代码在 iOS 的主线程上运行

iphone - iPhone 上的 OpenGL ES 不绘制任何东西

objective-c - 如果顶点是手动生成的(malloc 然后初始化),为什么我的对象不呈现,但如果静态分配则会呈现?