Xcode语义问题"Initializer元素不是编译时常量"

Дми*_*вич 2 objective-c xcode4

调用NSMakeRange方法时出现此错误.我做错了什么?

#import <Foundation/Foundation.h>
//
NSRange range1 = NSMakeRange(12, 5);
Run Code Online (Sandbox Code Playgroud)

yuj*_*uji 5

在函数或方法之外初始化变量时,只能使用常量值:不能执行任何代码.这里的问题是你正在尝试执行NSMakeRange.(见这个问题的答案,类似).

解决方案是声明range1但不为其分配任何值,然后实现+initialize设置值的方法.initialize是在类中调用任何其他方法之前调用的类方法.

+ (void)initialize {
    if (range1 == NULL) {
        range1 = NSMakeRange(12, 5);
    }
}
Run Code Online (Sandbox Code Playgroud)