【问题标题】:Objective C Initialiser element is not a compile-time constantObjective C Initialiser 元素不是编译时常量
【发布时间】:2013-03-16 00:55:55
【问题描述】:

我在尝试运行构建时收到错误消息“Initialiser 元素不是编译时常量”。可以看出,数组是问题的根源。我的代码如下:

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

@end

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

【问题讨论】:

  • NSArray 示例[] = @[@"X", @"Y", @"Z"];
  • 问题是您尝试创建指向常量的指针。您必须使用常量的值创建变量并指向它。

标签: objective-c nsarray constants compile-time


【解决方案1】:

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

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

如果你想初始化你的数组,你可以在运行时在一个方法中进行。您有多种选择。

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

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 感谢桑尼的帮助。我是一个 Objective-C 菜鸟。
    猜你喜欢
    • 1970-01-01
    • 2022-01-10
    • 2014-08-04
    • 2015-12-11
    • 1970-01-01
    • 2011-09-02
    • 2014-02-18
    • 1970-01-01
    相关资源
    最近更新 更多