【发布时间】:2012-10-30 14:38:34
【问题描述】:
我有这段代码(大部分的一小部分 - 只是这里显示的麻烦部分):
#define kSizeLarge @"large"
-(void)determineBestFileSizeWithLimit:(int)limit
{
static NSString *largeName = kSizeLarge;
static NSArray *nameArray = @[kSizeLarge];
...
}
编译器喜欢第一个静态变量,讨厌第二个,说
Initializer element is not a compile-time constant
从第二行删除静态使编译器高兴。
我做错了什么或做错了什么?
【问题讨论】:
-
好的,我现在明白了:那些集合静态初始化器实际上只是代码等效的简写 -
@[a,b,c]实际上只是[NSArray arrayWithObjects:a,b,c,nil]的简写,因为这不是编译时常量,速记版本也不是。 -
@CubsFanRon:不完全是。数组字面量相当于调用
arrayWithObjects:count:方法
标签: objective-c ios literals