您的位置:首页 > 移动开发 > IOS开发

ios Initializer element is not a compile-time constant

2014-05-27 18:11 330 查看
在scope外进行静态变量声明,

static const CGRect CouponListViewRect = CGRectMake(0.0,0.0,0.0,0.0);

报错:

Initializer element is not a compile-time constant

原理:

github上的回答:

42 down vote
When you define a variable outside the scope of a function, that variable's value is actually written into your executable file. This means you can only use a constant value. Since you don't know everything about the runtime environment at compile time (which classes are available, what is their structure, etc.), you cannot create objective c objects until runtime, with the exception of constant strings, which are given a specific structure and guaranteed to stay that way. What you should do is initialize the variable to nil and use
+initialize
to create your image.
initialize
is a class method which will be called before any other method is called on your class.

Example:

NSImage*imageSegment = nil;+(void)initialize {if(!imageSegment)
imageSegment =[[NSImage alloc] initWithContentsOfFile:@"/User/asd.jpg"];}-(id)init {
self =[super init];
if(self){
// Initialization code here.
}

return self;}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: