#import "PreferencesController.h"@implementation PreferencesController- (ID)init{ self = [super init]; if (self) { // Initialization code here. } return self;}NSImage* imageSegment = [[NSImage alloc] initWithContentsOffile:@"/User/asd.jpg"];//error here解决方法 当你在函数范围之外定义一个变量时,该变量的值实际上是写入你的可执行文件。这意味着您只能使用常量值。因为你不知道在编译时运行时环境的一切(这些类是可用的,它们的结构是什么),所以在运行时之前不能创建目标c对象,除了常量字符串,结构并保证保持这种方式。你应该做的是初始化变量为nil,并使用初始化来创建你的图像。 initialize是一个类方法,在您的类上调用任何其他方法之前将被调用。
例:
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;}总结
以上是内存溢出为你收集整理的objective-c – 编译器错误:“initializer元素不是编译时常量”全部内容,希望文章能够帮你解决objective-c – 编译器错误:“initializer元素不是编译时常量”所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)