Swift中如何使用 #if DEBUG
来源:互联网 发布:淘宝内部小二 编辑:程序博客网 时间:2024/06/06 12:45
转自:http://blog.csdn.net/u013152587/article/details/50488353
如有侵犯,请来信oiken@qq.com
Swift暂时还不支持大多数的预处理宏操作,但是可以支持“#if/#else/#endif”语句。
下面进行简单的设置使 #if DEBUG 有效,更详细的内容见:http://stackoverflow.com/questions/24003291/ifdef-replacement-in-swift-language
- 在项目的Build Settings里配置Swift Compiler - Custom Flags,展开Other Swift Flags,在Debug右侧输入“-DDEBUG”。
也可以“-D DEBUG”,但是不能有赋值,如:“-DDEBUG=1” 或 “-D DEBUG=1”都是无效的。 - 在项目的Build Settings里配置Apple LLVM x.x - Preprocessiong,展开Preprocessor Macros,在Debug右侧默认包含“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的判断将一致。
提示:在代码编辑器中,#if 分支的代码,条件成立的会有代码着色。
演示代码:Swift
// TestSwift.swiftimport Foundationclass 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.swiftimport UIKitclass ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() TestSwift.printSomething() TestObj.printSomething() } }
输出结果:
printSomething() in TestSwift.swift* DEBUG && FOO* NO BAR2016-03-04 14:50:41.331 test-swift[1187:48511] +[TestObj printSomething] in TestObj.m2016-03-04 14:50:41.332 test-swift[1187:48511] * DEBUG && FOO2016-03-04 14:50:41.332 test-swift[1187:48511] * NO BAR
--
在Swfit有另外一种方法是通过函数判断编译的优化选项,但是不够直观而且没有官方的文档,不建议使用。
如:
// ** Be carefull, Don`t do this: **if _isDebugAssertConfiguration() { print("--DEBUG--")}
还有其他两个函数,详细见前面的stackoverflow链接。
0 0
- Swift中如何使用 #if DEBUG
- Swift中如何使用 #if DEBUG
- VS2015中#if DEBUG的使用(C#)
- Eclipse中如何使用debug
- eclipse中如何使用debug
- IDEA 中如何使用 debug
- iOS开发小结 - 关于swift中#if DEBUG判断不执行的解决方案
- Swift中如何实现自定义Debug模式下打印Log
- swift 中如何使用selector
- Swift中if与switch语句使用一例
- 在swift中debug的环境下使用log输出
- 如何在VC中使用DEBUG
- 如何在VC中使用DEBUG(ZZ)
- MyEclipse中如何使用debug模式
- 【C#】#if DEBUG 与 如何更好更快的debug
- 如何在 Swift 项目中使用 CocoaPods
- 如何在Swift中使用NSError
- 如何在Swift 中使用AFNetworking
- 读书笔记:CSAPP
- Java 读书笔记 21.4 并发
- 机器学习算法笔记之1:kNN算法
- Java中intern()方法的使用
- Android屏幕适配的整合
- Swift中如何使用 #if DEBUG
- shell sendmail发送带附件的html格式邮件
- 服务器与客户端
- sublime下运行php
- 使用ajaxfileupload.js进行文件上传,出现的问题以及解决办法
- java中addShutdownHook钩子程序用途
- Caffe结构简析
- Linux配置Github SSH连接提示Permission denied (publickey)的解决方案
- python 知识点(三)列表、元组、字典