iOS 系统认知 debug distribution release 和 #ifdef DEBUG
debug:调试模式 有调试信息 线下
release: 无调试信息 经过了编译优化 发布 给用户使用的 线上模式
一般 工程项目 都是自带 上述两种配置结构
还有出现
distribution: 一般都没有这个选项,网上给的一种说法是"是使用了企业证书的编译版本。虽然这不是特别要求非得如此,但是许多参与企业版证书发布的程序员都遵守了这么一个协议"
其实,我们也可以自定一个这个结构,(这里我创建的是和Release一样的一个Distribution 当且仅当内测的时候用可选用这个)
(1)第一步
如图:菜单栏 Editor - Add Configuration - 在 project 里面的 info 的 Configurations 里面 点 "+"号 可以创建一个你的项目需要的结构

(2)第二步
创建一个新的结构是在复制已存在的debug 和 release结构的基础之上,所以还要处理一次全局宏的问题


习惯吧 我这里 把debug模式叫线下 把release distribution 叫线上模式 release 更加严格的讲 应该叫"上线模式 上传到AppStore的模式"
很明显 在debug的情况 执行打印日志 其他模式不打印(release 和 Distribution)
//DEBUG 模式下打印日志,当前行
#ifdef DEBUG
# define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__); //debug
#else
# define DLog(...) //非debug
#endif
优势:(1)大量的日志输出也会耗费app本身性能 所以...
(2)过多的日志输出在苹果官方测试评估过程中也会发现 然后退回 告诉你 减少不必要的输出...
同理有好多类似的用法
#ifdef DEBUG
# NSString * const BASIC_URL=@"http://xxxx/test"; //debug
#else
# NSString * const BASIC_URL=@"http://xxxx/production_test"; //其他
#endif
模式切换:
配置 edit scheme
(1)如果 只是模拟器和真机测试 run模式下面 build configuration 配置选择 debug 是 切换到线下, 会打印 DLog 会使用 http://xxxx/test,如果选择 release 是切换到线上,不会打印 DLog 会使用 http://xxxx/production_test ... ...
(2)如果是 打包,在调整基本的 开发者 生产者 证书 和 配置文件之外 调控Archive 归档来配置 打出的包 是线上还是线下
线下 : Archive 选择 build configuration 配置 debug
线上 : distribution / release
上线 : release (上传到appstore 一定要选择这个选项 !!!! 忘记哪个 也不能忘记这个,总不希望发布一个线下包给用户吧... )
iOS 系统认知 debug distribution release 和 #ifdef DEBUG的更多相关文章
- debug和release转载
Debug和Release区别 转自草原和大树 VC下Debug和Release区别 最近写代码过程中,发现 Debug 下运行正常,Release 下就会出现问题,百思不得其解,而Release 下 ...
- 细说Debug和Release区别
VC下Debug和Release区别 最近写代码过程中,发现 Debug 下运行正常,Release 下就会出现问题,百思不得其解,而Release 下又无法进行调试,于是只能采用printf方式逐步 ...
- VC下Debug和Release区别
整理日: 2015年3月23日 最近写代码过程中,发现 Debug 下运行正常,Release 下就会出现问题,百思不得其解,而Release 下又无法进行调试,于是只能采用printf方式逐步定位到 ...
- 【转】Debug和Release区别
VC下Debug和Release区别 最近写代码过程中,发现 Debug 下运行正常,Release 下就会出现问题,百思不得其解,而Release 下又无法进行调试,于是只能采用printf方式逐步 ...
- Debug和Release区别
VC下Debug和Release区别 最近写代码过程中,发现 Debug 下运行正常,Release 下就会出现问题,百思不得其解,而Release 下又无法进行调试,于是只能采用printf方式逐步 ...
- VS中Debug与Release、_WIN32与_WIN64的区别
一.Debug与Release 1. 区别 Debug——调试版,生成的.exe中包含很多调试信息,若直接发包,比较大: Release——发布版 2. 如何区分是Debug编译还是Release ...
- VC Debug和Release区别
https://msdn.microsoft.com/en-us/library/xz7ttk5s.aspx Optimizing Your Code Visual Studio 2015 The ...
- Visual Studio中Debug与Release以及x86、x64、Any CPU的区别 &&&& VS中Debug与Release、_WIN32与_WIN64的区别
本以为这些无关紧要的 Debug与Release以及x86.x64.Any CPU 差点搞死人了. 看了以下博文才后怕,难怪我切换了一下模式,程序就pass了.... 转载: 1.https://ww ...
- 关于VS项目平台的x86,x64,Any CPU以及Debug和Release的区别
相信对于很多刚接触打包程序的同志来说,关于x86,x64,Any CPU这三个项目平台,以及解决方案配置Debug和Release有什么区别?这个问题一定有许多的困惑,甚至不乏一些已经工作了很久的老程 ...
随机推荐
- Redis 过期时间
http://www.redis.cn/commands/expire.html 附录: Redis 过期时间 Keys的过期时间 通常Redis keys创建时没有设置相关过期时间.他们会一直存在, ...
- 测试ssh框架中hibernate的事务
<!-- 配置切面 --> <aop:config> <aop:pointcut expression="execution(* com.xxx.lobs.ma ...
- virtualBox centos 6.x不能联网
sudo vim /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 TYPE=Ethernet UUID=3323da63---89bb-92 ...
- Mongodb 与 MySQL对比
在数据库存放的数据中,有一种特殊的键值叫做主键,它用于惟一地标识表中的某一条记录.也就是说,一个表不能有多个主键,并且主键不能为空值. 无论是MongoDB还是MySQL,都存在着主键的定义. 对于M ...
- 初涉Quartz
1.首先需要导入包,必须导入的包如下: quartz-1.8.5.jar commons-logging.jar spring-core-3.0.5.RELEASE.jar sprin ...
- ios -bitmap上下文生成图片 生成水印
- (void)test { // 0. 加载背景图片 UIImage *image = [UIImage imageNamed:@"psb"]; // 1.创建bitmap上下文 ...
- 汇编 DOS的中断调用 INT 21H
DOS系统功能调用 这个汇编指令是用于提供DOS系统功能调用. 它是由DOS提供的一组实现特殊功能的子程序供程序猿在编写自己的程序时调用,以减轻编程的工作量. 分两种,re=view"> ...
- python学习【第九篇】python面向对象编程
一.面向对象了解 面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. Pyth ...
- 3673: 可持久化并查集 by zky
3673: 可持久化并查集 by zky Time Limit: 5 Sec Memory Limit: 128 MBSubmit: 2170 Solved: 978[Submit][Status ...
- Introduction to Mathematical Thinking - Week 4
否定的逻辑 应该思考符号背后表示的逻辑,而不是像操作算术运算符一样操作逻辑符号. 比如 对于任意的 x,x属于自然数,那么 x 是偶数或者奇数:这是对的 如果使用“乘法分配律”拆分,变成“对于任意的x ...