以下代码给了我错误:
// constants.h
extern NSArray const *testArray;
// constants.m
NSArray const *testArray = [NSArray arrayWithObjects: @"foo", @"bar", nil];
我得到的错误是
初始化元素不是常量
或者,如果我去掉指针指示符 (*),我会得到:
Objective-C 类 'NSArray' 的静态分配实例
最佳答案
简而言之,你不能。除了 NSString 之外,Objective-C 对象只在运行时创建。因此,您不能使用表达式来初始化它们。
有几种方法。
(1) 声明 NSArray *testArray
而不使用 const
关键字,然后有一些代码设置在应用程序生命周期的早期调用的值。
(2) 声明一个返回数组的便捷类方法,然后在该方法中使用 static NSArray *myArray
并将其视为单例(在 SO 中搜索“objective-c singleton”关于如何实例化的无数答案)。
关于objective-c - 如何在 Objective-c 中将数组声明为常量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2436463/