首页 > ios中怎么定义数组常量?

ios中怎么定义数组常量?

static const NSArray *imgArr = @[@"引导页1",@"引导页2",@"引导页3"];
我这样写,报错:initializer element is not a compile-time constant
请问要怎么写?


涉及到了运行时。
除了NSString类型之外,都不允许在方法外部声明一个‘静态全局常量类型的OC对象’。
你声明的static const NSArray *imgArr 在‘编译’的时候系统并不知道imgArr是什么类型,PS:全局常量类型的常量,static const是系统在编译的时候就需要确定你所定义的常量是什么类型的,然而OC的对象的类型是在‘运行时’确定的。与基本数据类型的确定时间不同,由编译的时候推到了运行时(OC支持多态的原因)。
但是NSString除外,NSString是一种特殊的数据类型,有特殊的存储结构和权限来保证系统能够识别。
如果你想再深入理解的话,需要对OC的运行时机制学习学习。


可以这样

static NSString const *imgArr[3] = {
    @"引导页1",
    @"引导页2",
    @"引导页3"
};

const NSArray * arr = @[@"123",@"456"];
这样写就已经是常量数组了

【热门文章】
【热门文章】