第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

編譯器錯(cuò)誤:“初始化器元素不是編譯時(shí)常量”

編譯器錯(cuò)誤:“初始化器元素不是編譯時(shí)常量”

慕哥6287543 2019-10-18 11:11:52
編譯此代碼時(shí),出現(xiàn)錯(cuò)誤“初始化元素不是編譯時(shí)常量”。誰能解釋為什么?#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
查看完整描述

3 回答

?
楊魅力

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超6個(gè)贊

當(dāng)您在函數(shù)范圍之外定義變量時(shí),該變量的值實(shí)際上會(huì)寫入可執(zhí)行文件中。這意味著您只能使用恒定值。由于您在編譯時(shí)不了解有關(guān)運(yùn)行時(shí)環(huán)境的所有信息(哪些類可用,它們的結(jié)構(gòu)等),因此,您必須等到運(yùn)行時(shí)才能創(chuàng)建目標(biāo)c對象,但常量字符串除外,這些常量字符串具有特定的結(jié)構(gòu)并保證保持這種狀態(tài)。您應(yīng)該做的是將變量初始化為nil并用于+initialize創(chuàng)建圖像。initialize是一個(gè)類方法,它將在您的類上調(diào)用任何其他方法之前被調(diào)用。


例:


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;

}


查看完整回答
反對 回復(fù) 2019-10-18
?
慕無忌1623718

TA貢獻(xiàn)1744條經(jīng)驗(yàn) 獲得超4個(gè)贊

您當(dāng)然可以如下所示#define宏。編譯之前,編譯器將用其值替換“ IMAGE_SEGMENT”。雖然將實(shí)現(xiàn)為數(shù)組定義全局查找,但它與全局變量不同。宏展開后,其作用與內(nèi)聯(lián)代碼相同,因此每次都會(huì)創(chuàng)建一個(gè)新圖像。因此,如果在使用宏的位置上格外小心,則可以有效地創(chuàng)建全局變量。


#define IMAGE_SEGMENT [[NSImage alloc] initWithContentsOfFile:@"/User/asd.jpg"];

然后在需要的地方使用它,如下所示。每次執(zhí)行以下代碼,都會(huì)使用新的內(nèi)存指針創(chuàng)建一個(gè)新對象。


imageSegment = IMAGE_SEGMENT


查看完整回答
反對 回復(fù) 2019-10-18
  • 3 回答
  • 0 關(guān)注
  • 979 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號