[iOS/Swift]在Release模式下(或者Archive时)关闭后台打印操作

原创 2015年07月08日 08:49:43

在 Object-C 的工程中,默认会在 Build Settings 中的 Apple LLVM x.x - Preprocessing 的 Preprocessor Maros / Debug 中添加 “DEBUG=1“ 的定义,这样我们就可以通过 #ifdef、 #ifndef 等预编译指令来区分Debug模式和Release模式下的不同行为(这是不是也算多态的一种,^_^)

// 在 Relase 模式下,关闭后台打印
#ifndef DEBUG
    #define NSLog(...) {}
#endif
这段代码可以写在pch文件(预编译头文件)中,如果没有pch文件,可以手动去创建这个文件。具体在 Build Settings 中搜索 "Prefix Header" 就懂了。


在 Swift 的工程中,我们需要手动在 Build Settings 中的 Swift Compiler - Custom Flags / Debug 中添加 “-D DEBUG” 后,才能使用 #if 指令来区分 Debug和Release模式下的不同行为(之后不知道Apple会不会改,但是目前是需要手动添加的)

// MARK: - 在 Relase 模式下,关闭后台打印
#if DEBUG
    #else
    func print(object: Any) {}
    func println(object: Any) {}
    func println() {}
    
    func NSLog(format: String, args: CVarArgType...) {}
#endif

有事需要复制代码不能识别,需要在#前面做一些回车操作才行。  郁闷~~


题外话:至于在Release的时候不关闭后台相关打印,是否会影响程序性能,或者包的大小,或者其他的影响!小编目前还没有仔细研究过,如果这方便的资料,会添加到本文内!^_^

ios 在release时屏蔽掉NSlog()的几个方法

简单介绍以下几个宏: 1) __VA_ARGS__ 是一个可变参数的宏,这个可变参数的宏是新的C99规范中新增的,目前似乎只有gcc支持(VC6.0的编译器不支持)。宏前面加上##的作用在于,当可变参...
  • zzx240394381
  • zzx240394381
  • 2017年02月02日 12:30
  • 151

使用Xcode-debug模式和release模式

在开发过程中,我们经常需要用到NSLog输出一些信息,甚至有的开发过程,必须在控制台查看输出,有经验的程序员通过控制台输出就能知道整个数据交互的一个流程。但是一个发布的程序,里面带有太多的NSLog输...
  • Jerome_XX
  • Jerome_XX
  • 2015年03月19日 00:23
  • 7935

关于bin和obj文件夹。debug 和release的区别

关于bin和obj文件夹。 楼主hcaihao(影子男孩)2002-05-29 20:04:24 在 .NET技术 / C# 提问 VS.Net会生成bin和obj文件夹以及它们下面的Debug和R...
  • laolaowhn
  • laolaowhn
  • 2007年09月11日 13:42
  • 5667

后台开发基础

linux和os: *、netstat tcpdump ipcsipcrm      点击打开链接 *、cpu内存硬盘等等与系统性能调试相关的命令 点击打开链接 *、设置修改权限tc...
  • weiyuefei
  • weiyuefei
  • 2016年08月03日 00:17
  • 3460

ios应用:release与debug编译方式的区别

以下是Debug 和 Release很难看出的问题 笔者亲身经历 因为Debug和Release和内存分配和释放方式是不同的,Debug模式下内存会延迟释放,weak的对象会延迟,但Release...
  • chengkaizone
  • chengkaizone
  • 2015年11月30日 18:29
  • 2716

Androrid应用打包release版时关闭log日志输出

我们在Android开发的过程中,经常会使用Log来打印日志,方便观察结果输出,但是当我们打包应用,需要发布到应用市场时,显然是不能输出这些信息的。肯定不能采取批量删除或注释这种暴力的方法,下面我主要...
  • abc609691039
  • abc609691039
  • 2016年01月12日 14:26
  • 2233

网站后台操作界面的开发

在开始之前,我们先来了解一下html的框架标签。
  • yo7822349
  • yo7822349
  • 2014年05月13日 13:18
  • 1130

android 后台视频录制【原创】

2012-08-02 21:41:39|  分类: android记录 |  标签:android视频  |举报|字号 订阅 题记:记录下这几天一直在苦恼的一件事,心情各...
  • mirkerson
  • mirkerson
  • 2014年08月12日 20:06
  • 13169

iOS开发技巧(使用Xcode DEBUG模式和RELEASE模式)

在开发过程中,我们经常需要用到NSLog输出一些信息,甚至有的开发过程,必须在控制台查看输出,有经验的程序员通过控制台输出就能知道整个数据交互的一个流程。但是一个发布的程序,里面带有太多的NSLog输...
  • haiooh
  • haiooh
  • 2016年05月09日 10:41
  • 5943

Android中Release版本去掉Log的方法

一、自定义BuildConfig字段在gradle配置文件中,定义LOG字段,默认为truebuildConfigField "boolean", "LOG", "true"同步一下工程,查看app/...
  • hp910315
  • hp910315
  • 2016年09月09日 16:33
  • 5007
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[iOS/Swift]在Release模式下(或者Archive时)关闭后台打印操作
举报原因:
原因补充:

(最多只允许输入30个字)