debug if swift_#if debug 无效swift - CSDN
  • 转自:... ... ...Swift暂时还不支持大多数的预处理宏操作,但是可以支持“#if/#else/#endif”语句。 下面进行简单的设置使 #if DEBUG 有效,更详细的内容见:http://stackoverfl

    转自: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

    1. 在项目的Build Settings里配置Swift Compiler - Custom Flags,展开Other Swift Flags,在Debug右侧输入“-DDEBUG”。
      也可以“-D DEBUG”,但是不能有赋值,如:“-DDEBUG=1” 或 “-D DEBUG=1”都是无效的。
    2. 在项目的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.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链接。


    展开全文
  • 在以前的OC项目中我们经常用#if DEBUG来判断是否是在DEBUG模式下调试代码,然后最近我用swift写的项目中发现#if DEBUG判断居然步管用了,多方查证为果的情况下终于找到了解决方案,希望能帮助到有需要的人~首先我们...

    在以前的OC项目中我们经常用#if DEBUG来判断是否是在DEBUG模式下调试代码,然后最近我用swift写的项目中发现#if DEBUG判断居然不管用了,多方查证为果的情况下终于找到了解决方案,希望能帮助到有需要的人~

    • 首先我们要查看我们当前是否在DEBUG模式下运行的代码

    这里写图片描述

    • 确认上一步无误后,我们就要做以下操作,进入Build Settings -> Swift Compiler - Custom Flags -> Other Swift Flages -> Debug的路径下加入-D DEBUG,如下图所示:

    这里写图片描述

    这样发现之前#if DEBUG判断有效果了~~

    这个原因找了半天才到国外的一个网上找到,希望遇到同样问题的同学不要走这么多冤枉路,希望大家能学到东西,谢谢大家的阅读~

    展开全文
  • 在target下 Build Settings 搜索 Other Swift Flags 设置Debug 添加 -D DEBUG,注意不要好Release一起添加 使用方式和oc下一样 #if DEBUG // 判断是否在测试环境下  // TODO #else  // TODO ...

    在target下 Build Settings 搜索 Other Swift Flags

    设置Debug 添加 -D DEBUG,注意不要好Release一起添加


    使用方式和oc下一样

    #if DEBUG // 判断是否在测试环境下

        // TODO

    #else

        // TODO

    #endif


    展开全文
  • SwiftDebug和Release宏

    2016-02-15 17:20:00
    Swift Compiler - Custom Flags的Other Swift Flags的Debug里添加-DDEBUG 在Release里添加-DRELEASE step b:  在代码里这么使用  #if DEBUG  print("debug")  #endif  

    step a:

    在Swift Compiler - Custom Flags的Other Swift Flags的Debug里添加-DDEBUG

    在Release里添加-DRELEASE

    step b:

            在代码里这么使用

            #if DEBUG

                print("debug")

            #endif

            

            #if RELEASE

                print("release")

            #endif



    展开全文
  • swift debug 输出

    2016-10-20 11:23:30
    编译设置 ...选择你的项目名称;选择编译设置;搜索 Compiler Flag;展开 Other C Flags;...输入 -D DEBUG。...最后,我们将把我们实际的 print 函数打包进...private func log(emoji: String, _ object: T) { #if DEBUG
  • 在iOS开发中,我们常见的Debug方式很多中,例如最常见的DLog DLog的使用,DLog在DeBug模式下会输出信息,包括方法名,行数以及你想要输出的内容。定义如下(包括ELog): #ifdefDEBUG #ifndefDLog #defineDLog(fmt,...
  • 打印log是开发阶段,调试过程中是必不可少的一步,objective-c时代我们可以使用宏定义来设置工程debug模式下打印log,release模式下不打印log,但是过度到swift之后,我们发现swift的版本特性,不具有宏这种东西,...
  • Swift debug打印

    2019-10-29 21:30:22
    /// 调试方法打印输出 func debugPrint<T>(_ message: T, filePath: String = #file, function:String = #function, rowCount: Int = #line) { #if DEBUG let fileName = (filePath as NSStri...
  • 设置 Other Swift Flags 的Debug为-D DEBUG func DLog(message: AnyObject) {  #if DEBUG  print("Time: \(NSDate()), debug info is : \(message)")  #else  #endif }
  • iOS Swift Crash的捕获

    2017-09-19 16:34:53
    iOS Swift Crash的捕获 crash捕获介绍 如果对crash捕获不太了解,可以先参考这篇文章,本文进行Mach异常+Unix信号方式捕获crash。 NSException一般只在OC当中被捕获,一般情况下在捕获...
  • iOS #ifdef DEBUG 详解

    2017-01-07 21:28:17
    1> #ifdef DEBUG代码块 #ifdef DEBUG  NSLog(@"Debug 模式的代码..."); #else  NSLog(@"Release 模式的代码..."); #endif 2> xcode 切换 debug 和 release版本 如果要测试在不同模式下代码的运行...
  • 1.在AppDelegate.swift中自定义方法 func NJLog(message: T, fileName: String = #file, methodName: String = #function, lineNumber: Int... #if DEBUG // 要把路径最后的字符串截取出来 let fName = ((fileName a
  • 插件1:SDE(Swift Development Enviroment)是VSCode插件商城的一个插件,他提供了代码补全功能,注意要下载作者为vknabel的版本,它支持最新版的Swift。 插件2:运行Swift代码需要安装Code Runner插件 ...
  • 在开发过程中,我们经常需要用到NSLog输出一些信息,但是一个发布的程序,里面带有太多的NSLog输出,肯定对于App性能有所影响,这时候我们可以使用一个宏定义来处理,在开发的时候使用DEBUG模式,在发布的时候使用...
  • 前言Swift编译时间过长,是件难以忍受的事情。你能忍心看着几行看似简单的代码,慢吞吞的编译吗...1、在build setting中,设置Other Swift Flags为-Xfrontend -debug-time-function-bodies。这样编译时清楚的看到每个函
  • 1: 2: 3: 然后在app delegate的全局环境下输入: fun ZZGLog(message : T, file : String = #file, funcName : String = #function, lineNum : ... #if DEBUG  let
1 2 3 4 5 ... 20
收藏数 3,878
精华内容 1,551
热门标签
关键字:

debug if swift