这些行都位于@implementation
声明上方的实现文件中.
NSString * const aVar = @"aVarStringValue";
static NSString *aVar = @"aVarStringValue";
据我所知,第二个static
只在应用程序的生命周期内分配一次,这一事实有助于提高性能.
但这是否意味着它本质上是一个内存泄漏,因为该内存块永远不会被释放?
而前const
个声明是否每次被访问时都会被分配?
这些行都位于@implementation
声明上方的实现文件中.
NSString * const aVar = @"aVarStringValue";
static NSString *aVar = @"aVarStringValue";
据我所知,第二个static
只在应用程序的生命周期内分配一次,这一事实有助于提高性能.
但这是否意味着它本质上是一个内存泄漏,因为该内存块永远不会被释放?
而前const
个声明是否每次被访问时都会被分配?
Objective-C(和C/C++)中的static
关键字表示变量的可见性.静态变量(不在方法中)只能在该特定文件中访问.另一方面,静态局部变量只能分配一次.
另一方面,const
表示不可修改和/或重新分配参考;并且在如何创建它上是正交的(不过编译器可能会优化常量).
值得一提的是,在应用程序的生命周期中,NSString
个文本被初始化,并且永远不会被销毁.它们被分配到内存的只读部分.