Ios 目标C—NSArray型静态类变量
我将我的类的一些默认初始化值存储为静态类变量。像这样:Ios 目标C—NSArray型静态类变量,ios,objective-c,arrays,static,nsarray,Ios,Objective C,Arrays,Static,Nsarray,我将我的类的一些默认初始化值存储为静态类变量。像这样: // List.h static NSString *DEFAULT_LIST_NAME = @"Not Set"; static BOOL DEFAULT_RECURSION = NO; 我还需要将类型为NSArray*的静态变量设置为空数组。如何做到这一点?目前我得到了一个错误: 初始值设定项元素不是编译时常量 为此定义类方法: .m文件 @implementation test static NSArray *array; + (
// List.h
static NSString *DEFAULT_LIST_NAME = @"Not Set";
static BOOL DEFAULT_RECURSION = NO;
我还需要将类型为NSArray*
的静态变量设置为空数组。如何做到这一点?目前我得到了一个错误:
初始值设定项元素不是编译时常量
为此定义类方法: .m文件
@implementation test
static NSArray *array;
+ (NSArray *)array {
if (!array) array = [[NSArray alloc] init];
return array;
}
@end
您将得到编译时错误“Initializer元素不是编译时常量”,因为静态变量的值实际上是在编译时写入可执行文件的。因此,您只能使用常量值(而不是在运行时执行的alloc/init)。您可以使用以下任一选项
static NSArray*arr=nil
并使用+initialize
创建数组\uuuuuuu属性((构造函数))
嗨,这个问题和你的相似。有不同的方法可以做到这一点。也许你想检查一下:@SamB我为什么要这样做?显示你的错误截图。如果我使用上面的静态代码行,我的Xcode 8中不会出现任何编译警告或错误