Objective C Initialiser元素不是编译时常量

时间:2013-03-26 09:31:00

标签: objective-c nsarray constants compile-time

当我尝试运行构建时,我收到错误'Initialiser element is not a compile-time constant'。结果表明,Array是问题的根源。我的代码如下:

@implementation XYZViewController 
//Array setup 
NSArray *example = @[@"X", @"Y", @"Z"];

@end

这不是我的所有代码,但我目前认为没有必要在此处显示我的完整代码。

2 个答案:

答案 0 :(得分:2)

关键是@[@"X", @"Y", @"Z"];不是静态初始值设定项,因为编译器会将其转换为对arrayWithObjects:count:的{​​{1}}的方法调用。

静态初始化不能是方法调用,当然编译器会抱怨它。

如果要对数组进行初始化,可以在运行时在方法内部执行此操作。你有几种选择。

如果你想为每个实例初始化数组,只需在默认的inizializer中执行(一个是取决于特定的类)。

如果你想在课程级别这样做,你可以在NSArray类方法中完成。

答案 1 :(得分:1)

你试图在这个块中声明数组,这就是它显示错误的原因, 试试这个,

@implementation XYZViewController {
    //Array setup 
    NSArray *example ;
}

@end

在viewDidLoad方法中指定数组值,或在其他地方指定此example = @[@"X", @"Y", @"Z"];

相关问题