头文件中的变量,内存管理

时间:2017-09-12 00:34:34

标签: ios objective-c header-files

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

1 个答案:

答案 0 :(得分:2)

你问:

  

这些变量的生命周期是什么?

全局变量的生命周期适用于应用程序的生命周期。

  

这些变量何时被分配/释放?

在应用程序终止之前,它们才会被释放。

  

这些变量存储在哪里?

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

您不应将const全局变量的实现放在标头中。将它们放在.m文件中。只在.h文件中添加外部引用。

因此,例如,将以下内容放在.m文件中:

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

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

extern NSString * const kNotificationName;

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