Swift暫時還不支持大多數的預處理宏操作,但是可以支持“#if/#else/#endif”語句。
下面進行簡單的設置使 #if DEBUG 有效,更詳細的內容見:http://stackoverflow.com/questions/24003291/ifdef-replacement-in-swift-language
說明:第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的判斷將一致。
提示:在代碼編輯器中,#if 分支的代碼,條件成立的會有代碼著色。
演示代碼:Swift
// TestSwift.swift import Foundation class TestSwift { static func printSomething() { print("\(__FUNCTION__) in \(NSURL(fileURLWithPath:__FILE__).lastPathComponent!)") #if DEBUG && FOO print("* DEBUG && FOO") #elseif DEBUG print("* DEBUG") #else print("* NO DEBUG") #endif #if !BAR print("* NO BAR") #endif } }
演示代碼:Objective-C
// TestObj.h #import <Foundation/Foundation.h> @interface TestObj : NSObject + (void)printSomething; @end // TestObj.m #import "TestObj.h" @implementation TestObj + (void)printSomething { NSLog(@"%s in %@", __PRETTY_FUNCTION__, [[NSString stringWithCString:__FILE__ encoding:NSUTF8StringEncoding] lastPathComponent]); #if (defined DEBUG) && (defined FOO) NSLog(@"* DEBUG && FOO"); #elif (defined DEBUG) NSLog(@"* DEBUG"); #else NSLog("* NO DEBUG"); #endif #ifndef BAR NSLog(@"* NO BAR"); #endif } @end // PROJECTNAME-Bridging-Header.h #import "TestObj.h"
演示代碼:打印輸出
// ViewController.swift import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() TestSwift.printSomething() TestObj.printSomething() } }
輸出結果:
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() { print("--DEBUG--") }
還有其他兩個函數,詳細見前面的stackoverflow鏈接。
--
下載演示代碼:test_swift_if_DEBUG.7z
到Linux公社資源站下載:
------------------------------------------分割線------------------------------------------
免費下載地址在 http://linux.linuxidc.com/
用戶名與密碼都是www.linuxidc.com
具體下載目錄在 /2016年資料/4月/13日/Swift中如何使用 #if DEBUG/
下載方法見 http://www.linuxidc.com/Linux/2013-07/87684.htm
------------------------------------------分割線------------------------------------------
您可用The Unarchiver、p7zip 或者 BetterZip 來解壓 7z 文檔。