2

当我尝试运行我的构建时,我收到错误“Initialiser element is not a compile-time constant”。可以看出,数组是问题的根源。我的代码如下:

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

@end

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

4

2 回答 2

2

关键是它 @[@"X", @"Y", @"Z"];不是静态初始化器,因为编译器将它转换为对arrayWithObjects:count:of的方法调用NSArray

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

如果要初始化数组,可以在运行时在方法中进行。你有几个选项可以做到这一点。

如果您想为每个实例初始化数组,只需在默认初始化程序中执行此操作(取决于特定类)。

如果你想在类级别这样做,你可以在initialize类方法中进行。

于 2013-03-27T21:25:32.130 回答
1

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

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

@end

在 viewDidLoad 方法或其他类似的地方分配数组值 example = @[@"X", @"Y", @"Z"];

于 2013-03-26T09:38:51.243 回答