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的更多相关文章

  1. debug和release转载

    Debug和Release区别 转自草原和大树 VC下Debug和Release区别 最近写代码过程中,发现 Debug 下运行正常,Release 下就会出现问题,百思不得其解,而Release 下 ...

  2. 细说Debug和Release区别

    VC下Debug和Release区别 最近写代码过程中,发现 Debug 下运行正常,Release 下就会出现问题,百思不得其解,而Release 下又无法进行调试,于是只能采用printf方式逐步 ...

  3. VC下Debug和Release区别

    整理日: 2015年3月23日 最近写代码过程中,发现 Debug 下运行正常,Release 下就会出现问题,百思不得其解,而Release 下又无法进行调试,于是只能采用printf方式逐步定位到 ...

  4. 【转】Debug和Release区别

    VC下Debug和Release区别 最近写代码过程中,发现 Debug 下运行正常,Release 下就会出现问题,百思不得其解,而Release 下又无法进行调试,于是只能采用printf方式逐步 ...

  5. Debug和Release区别

    VC下Debug和Release区别 最近写代码过程中,发现 Debug 下运行正常,Release 下就会出现问题,百思不得其解,而Release 下又无法进行调试,于是只能采用printf方式逐步 ...

  6. VS中Debug与Release、_WIN32与_WIN64的区别

    一.Debug与Release 1.  区别 Debug——调试版,生成的.exe中包含很多调试信息,若直接发包,比较大: Release——发布版 2.  如何区分是Debug编译还是Release ...

  7. VC Debug和Release区别

    https://msdn.microsoft.com/en-us/library/xz7ttk5s.aspx   Optimizing Your Code Visual Studio 2015 The ...

  8. Visual Studio中Debug与Release以及x86、x64、Any CPU的区别 &&&& VS中Debug与Release、_WIN32与_WIN64的区别

    本以为这些无关紧要的 Debug与Release以及x86.x64.Any CPU 差点搞死人了. 看了以下博文才后怕,难怪我切换了一下模式,程序就pass了.... 转载: 1.https://ww ...

  9. 关于VS项目平台的x86,x64,Any CPU以及Debug和Release的区别

    相信对于很多刚接触打包程序的同志来说,关于x86,x64,Any CPU这三个项目平台,以及解决方案配置Debug和Release有什么区别?这个问题一定有许多的困惑,甚至不乏一些已经工作了很久的老程 ...

随机推荐

  1. Java对象类型的判断

    instanceof 判断某个对象是否是某个类的实例或者某个类的子类的实例.它的判断方式大概是这样的: public<T> boolean function(Object obj, Cla ...

  2. IOS设计模式浅析之单例模式(Singleton)

    说在前面 进入正式的设计模式交流之前,扯点闲话.我们在项目开发的过程中,经常会不经意的使用一些常见的设计模式,如单例模式.工厂方法模式.观察者模式等,以前做.NET开发的时候,认真拜读了一下程杰老师的 ...

  3. socket心跳检测

    一.什么是心跳检测 判断对方(设备,进程或其它网元)是否正常动行,一般采用定时发送简单的通讯包,如果在指定时间段内未收到对方响应,则判断对方已经当掉.用于检测TCP的异常断开. 基本原因是服务器端不能 ...

  4. LeetCode447. Number of Boomerangs

    Description Given n points in the plane that are all pairwise distinct, a "boomerang" is a ...

  5. php zend studio 如何导入已经存在的项目

    点击 左上的   file->import ->General->在选择第二个[  Exissting ....]

  6. Android 缓存详解目录

    1.http://www.cnblogs.com/lzrabbit/p/3734850.html 2.

  7. with root cause 解决办法

    现象:1.工程在启动的时候无异常,当页面加载到包含spring:message标签的页面时,在后台报空指针异常,同时控制               台会显示with root cause提示: 2. ...

  8. redis python交互和实际例子

    import redis try: r=redis.StrictRedis(host='localhost',port=6379) except Exception,e: print e.messag ...

  9. Python Theano 一键安装

    Download Anaconda Anaconda is a completely free Python distribution (including for commercial use an ...

  10. 忘记了Ubuntu的密码

    今天装了个虚拟机,现在装起来顺手的不行,毕竟用了多少次VMware了,结果进去发现,以前用过的虚拟机密码忘了,于是就百度解决方法,总结如下,其实很简单. 我用的Ubuntu 11的版本,后续即使有改动 ...