开发者社区> 问答> 正文

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

以下代码给我错误:

// constants.h extern NSArray const *testArray; // constants.m NSArray const *testArray = [NSArray arrayWithObjects: @"foo", @"bar", nil]; 我得到的错误是 initializer element is not constant

或者,如果我拿走指针指示器(*),我将得到: statically allocated instance of Objective-C class 'NSArray' 问题来源于stack overflow

展开
收起
保持可爱mmm 2020-02-09 13:17:01 558 0
1 条回答
写回答
取消 提交回答
  • 简而言之,你不能。除NSString常量外,Objective-C对象只能在运行时创建,因此,不能使用表达式对其进行初始化。

    有几种方法。

    (1)在NSArray *testArray不使用const关键字的情况下声明,然后使用一些代码来设置在应用程序生命周期中很早就调用的值。

    (2)声明一个方便的类方法,该方法返回数组,然后static NSArray *myArray在该方法中使用a 并将其视为单例(在SO中搜索“ objective-c单例”,以获取关于如何实例化的无数答案)。

    2020-02-09 13:17:10
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载