Objective c 目标C初始化器元素不是编译时常量

Objective c 目标C初始化器元素不是编译时常量,objective-c,nsarray,constants,compile-time,Objective C,Nsarray,Constants,Compile Time,当我尝试运行我的构建时,我得到错误“Initialiser元素不是编译时常量”。结果表明,阵列是问题的根源。我的代码如下: @implementation XYZViewController //Array setup NSArray *example = @[@"X", @"Y", @"Z"]; @end 这不是我的全部代码,但我目前认为没有必要在此处显示我的完整代码。您试图在此块中声明数组,这就是它显示错误的原因, 试着这样, @implementation XYZViewContr

当我尝试运行我的构建时,我得到错误“Initialiser元素不是编译时常量”。结果表明,阵列是问题的根源。我的代码如下:

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

@end

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

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

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

@end

在viewDidLoad方法中指定数组值,或在其他类似的方法中指定数组值,例如=@[@“X”、@“Y”、@“Z”]

重点是
[@“X”、@“Y”、@“Z”]
不是静态初始值设定项,因为编译器将其转换为对
arrayWithObjects:count:
of
NSArray
的方法调用

静态初始化不能是方法调用,当然编译器会对此进行抱怨

如果您想对数组进行序列化,可以在运行时在方法内部进行。你有几个选择来做这件事

如果要为每个实例对数组进行初始化,只需在默认的初始化器中进行(具体是哪一个取决于特定的类)


如果要在类级别执行此操作,可以在
initialize
class方法中执行此操作。

NSArray示例[]=@[@“X”、@“Y”、@“Z”];问题是您试图创建指向常量的指针。您必须创建具有常量值的变量并指向它。谢谢您的帮助。我是一个客观的Noob。