zoukankan      html  css  js  c++  java
  • 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  一定要选择这个选项 !!!! 忘记哪个 也不能忘记这个,总不希望发布一个线下包给用户吧... )

  • 相关阅读:
    双缓冲绘图模式
    java异常
    15-11-24 system同步与异步
    15-11-23:system指令
    使用Swing组件编写一个支持中文文本编辑程序ChineseTextEdit.java
    JTextArea 加入滚动条
    键盘事件
    monitoring_db
    del_archivelog
    Redis 4.0.14 单实例安装
  • 原文地址:https://www.cnblogs.com/someonelikeyou/p/5776300.html
Copyright © 2011-2022 走看看