Swift中如何使用 if DEBUG

2021-07-17 03:18:09 字數 1853 閱讀 9605

**:

swift暫時還不支援大多數的預處理巨集操作,但是可以支援「#if/#else/#endif」語句。

下面進行簡單的設定使 #if debug 有效,更詳細的內容見:

在專案的build settings裡配置swift compiler - custom flags,展開other swift flags,在debug右側輸入「-ddebug」。

也可以「-d debug」,但是不能有賦值,如:「-ddebug=1」 或 「-d debug=1」都是無效的。

說明:第1步使swift**編譯debug時定義debug標記,第2步使objective-c、c、c++的llvm預處理在debug時定義debug=1巨集標記。如果是純swift工程可以忽略第2步。

例子:為swift和objective-c混合**工程設定debug和foo標記

根據步驟1,設定如圖:

根據步驟2,設定如圖:

現在swift和objective-c的**進行debug和foo的判斷將一致。

演示**:swift

//

testswift.swift

import foundation

class

testswift

}

演示**:objective-c

//

testobj.h

#import

@inte***ce

testobj : nsobject

+ (void

)printsomething;

@end

#import

"testobj.h

"@implementation

testobj

+ (void

)printsomething

@end

#import

"testobj.h

"

演示**:列印輸出

//

viewcontroller.swift

import uikit

class

viewcontroller: uiviewcontroller

}

輸出結果:

printsomething() in testswift.swift

* debug && foo

* no bar

2016-03-04 14:50:41.331 test-swift[1187:48511] +[testobj printsomething] in testobj.m

2016-03-04 14:50:41.332 test-swift[1187:48511] * debug && foo

2016-03-04 14:50:41.332 test-swift[1187:48511] * no bar

--在swfit有另外一種方法是通過函式判斷編譯的優化選項,但是不夠直觀而且沒有官方的文件,不建議使用。

如:

//

** be carefull, don`t do this: **

if_isdebugassertconfiguration()

還有其他兩個函式,詳細見前面的stackoverflow鏈結。--

您可用the unarchiver、p7zip 或者 betterzip 來解壓 7z 文件。

Swift中如何使用 if DEBUG

如有侵犯,請來信oiken qq.com swift暫時還不支援大多數的預處理巨集操作,但是可以支援 if else endif 語句。下面進行簡單的設定使 if debug 有效,更詳細的內容見 在專案的build settings裡配置swift compiler custom flags,展開...

Swift 中如何擷取String

swift 中擷取字串的方式非常麻煩,但是在oc中的字串擷取卻比較便捷,要擷取string 只需要將string 轉化為nsstring 在進行擷取就可以了 示例 如下 let mystr www.520it.com var substr mystr as nsstring substringfro...

Swift 中如何理解copy on write

當值型別 如struct 在複製時,複製的物件和元 原物件實際上在記憶體中指向同乙個物件。當且僅當修改複製後的物件時,才會在記憶體中重新建立乙個新的物件。舉例 arraya是乙個陣列,為值型別 let arraya 1,2,3 arrayb這個時候與arraya在記憶體中是同乙個陣列,記憶體中並沒有...