亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

#ifdef替換在SWIFT語言中

#ifdef替換在SWIFT語言中

POPMUISE 2019-07-09 16:27:51
#ifdef替換在SWIFT語言中在C/C+/Object-C中,可以使用編譯器預處理器定義宏。此外,您可以使用編譯器預處理器包括/排除代碼的某些部分。#ifdef DEBUG    // Debug-only code#endifSWIFT也有類似的解決方案嗎?
查看完整描述

3 回答

?
慕俠2389804

TA貢獻1719條經驗 獲得超6個贊

是的你能做到。

在SWIFT中,您仍然可以使用“#if/#etc/#endif”預處理宏(盡管有更多的限制),如蘋果文檔..下面是一個例子:

#if DEBUG    let a = 2#else
    let a = 3#endif

現在,您必須在其他地方設置“調試”符號。設置在“SWIFT編譯器-自定義旗幟”部分,“其他SWIFT旗幟”行。將調試符號添加到-D DEBUG入場。

與往常一樣,您可以在調試或發布時設置不同的值。

我用真正的代碼測試了它,它很有效;不過在操場上它似乎沒有被識別出來。

你可以讀我的原文這里.


重要說明: -DDEBUG=1不管用。只-D DEBUG起作用了。似乎編譯器忽略了帶有特定值的標志。


查看完整回答
反對 回復 2019-07-09
?
SMILET

TA貢獻1796條經驗 獲得超4個贊

在很多情況下,你并不需要有條件的編撰你只是需要有條件的行為你可以開關。為此,可以使用環境變量。這有一個巨大的優勢,您實際上不必重新編譯。

您可以在方案編輯器中設置環境變量,并輕松地打開或關閉它:

您可以使用NSProcessInfo檢索環境變量:

    let dic = NSProcessInfo.processInfo().environment    if dic["TRIPLE"] != nil {
        // ... do secret stuff here ...    }

這是一個真實的例子。我的應用程序只在設備上運行,因為它使用的是音樂庫,而模擬器上不存在這個庫。那么,如何在模擬器上為我不擁有的設備拍攝屏幕快照呢?沒有這些屏幕截圖,我就無法向AppStore屈服。

我需要假數據和一個不同的處理方法..我有兩個環境變量:一個在打開時告訴應用程序在我的設備上運行時從真實數據中生成假數據;另一個在打開時在模擬器上運行時使用假數據(而不是缺少的音樂庫)。由于Scheme編輯器中的環境變量復選框,打開/關閉每一種特殊模式都很容易。更重要的是,我不能意外地在我的AppStore構建中使用它們,因為歸檔沒有環境變量。


查看完整回答
反對 回復 2019-07-09
  • 3 回答
  • 0 關注
  • 1396 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號