objective-c – 编译器错误:“initializer元素不是编译时常量”

objective-c – 编译器错误:“initializer元素不是编译时常量”,第1张

概述当编译这段代码时,我得到错误“initializer元素不是编译时常量”。任何人都可以解释为什么? #import "PreferencesController.h"@implementation PreferencesController- (id)init{ self = [super init]; if (self) { // Initializat 当编译这段代码时,我得到错误“initializer元素不是编译时常量”。任何人都可以解释为什么?

#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元素不是编译时常量”所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1047799.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存