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 一定要选择这个选项 !!!! 忘记哪个 也不能忘记这个,总不希望发布一个线下包给用户吧... )
最新文章
- 用spm2构建seajs项目的过程
- byte[] 转十进制
- HTML5学习总结-01 开发环境和历史
- ajax提交Form
- SOAPUI测试步骤之流量控制(Conditional Goto)
- BZOJ3346 : Ural1811 Dual Sim Phone
- HLG2062(make,heap问题)
- 2015年9月29日 sql 触发器
- Android 连接tomcat模拟登陆账号
- Facebook登录 AndroidStudio
- BcdTool(系统启动菜单管理器) v1.0912 绿色版
- Java学习(一)
- js设置radio单选框值选中
- 利用insertd查出更新记录
- Fiddler抓包—搞定接口测试
- CountUp.js用法 让数字动起来的插件
- 【小白的CFD之旅】小结及预告
- HDU 1074 Doing Homework (dp+状态压缩)
- CNZZ站点流量统计原理简析
- Cocostudio学习笔记(2) Button + CheckBox
热门文章
- python学习代码
- Unity学习笔记 - UI System(一)
- [转]sql语句优化原则
- jQuery EasyUI DataGrid在MVC中的运用-基本属性并实现分页
- python 开发技巧(3)-- 连接mysql 出现错误 ModuleNotFoundError: No module named 'MySQLdb'
- erlang 洗牌 shuffle
- Mongodb 与 MySQL对比
- js 把字符串当做方法执行
- apache2+svn Expected FS format '2'; found format '3'
- 项模板选择器属性(ItemTemplateSelector属性)和样式选择器(ItemContainerStyleSelector)