当我尝试运行我的构建时,我收到错误“Initialiser element is not a compile-time constant”。可以看出,数组是问题的根源。我的代码如下:
@implementation XYZViewController
//Array setup
NSArray *example = @[@"X", @"Y", @"Z"];
@end
这不是我的全部代码,但我目前认为没有必要在此处显示我的完整代码。
当我尝试运行我的构建时,我收到错误“Initialiser element is not a compile-time constant”。可以看出,数组是问题的根源。我的代码如下:
@implementation XYZViewController
//Array setup
NSArray *example = @[@"X", @"Y", @"Z"];
@end
这不是我的全部代码,但我目前认为没有必要在此处显示我的完整代码。
关键是它 @[@"X", @"Y", @"Z"];
不是静态初始化器,因为编译器将它转换为对arrayWithObjects:count:
of的方法调用NSArray
。
静态初始化不能是方法调用,当然编译器会抱怨它。
如果要初始化数组,可以在运行时在方法中进行。你有几个选项可以做到这一点。
如果您想为每个实例初始化数组,只需在默认初始化程序中执行此操作(取决于特定类)。
如果你想在类级别这样做,你可以在initialize
类方法中进行。
你试图在这个块中声明数组,这就是它显示错误的原因,试试这样,
@implementation XYZViewController {
//Array setup
NSArray *example ;
}
@end
在 viewDidLoad 方法或其他类似的地方分配数组值 example = @[@"X", @"Y", @"Z"];
。