objective-c - 如何在 Objective-c 中将数组声明为常量?

标签 objective-c arrays constants

以下代码给了我错误:

//  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/

相关文章:

ios - 如何在 X 时间后在后台杀死应用程序

c - 写入作为结构成员的字符数组

c++ - 有没有办法将 nth_element 与数据拷贝一起执行?

c++ - const数组更改c++的问题

objective-c - 如何更改 Sprite 的 Z 顺序?

ios - SpriteKit : How to animate drawing of a rounded rectangle

ios - 检测耳机是否插入 - iOS 5

arrays - 如何判断 Fortran 数组指针是否已直接分配,或者与另一个对象关联?

arrays - 计算数组有多少个以及哪个索引

c++ - 为什么一个常量函数返回的volatile类型可以是常量?