以下代码给我错误:
// 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
简而言之,你不能。除NSString常量外,Objective-C对象只能在运行时创建,因此,不能使用表达式对其进行初始化。
有几种方法。
(1)在NSArray *testArray不使用const关键字的情况下声明,然后使用一些代码来设置在应用程序生命周期中很早就调用的值。
(2)声明一个方便的类方法,该方法返回数组,然后static NSArray *myArray在该方法中使用a 并将其视为单例(在SO中搜索“ objective-c单例”,以获取关于如何实例化的无数答案)。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。