其实这个问题大家都知道,但是一般都是清楚一些皮毛的东西,只能进行一些简单的应用。在这里详细说一下模式切换的使用。

Xcode给我们自带了两种编译模式Release 和 Debug,通常情况下我们可以利用这两种模式做很多事情,比如debug下打印输出日志release 下不打印,这是我们通常的操作:

一般Apple已经为我们设置好了 DEBUG 的宏定义,你可以在setting里查看:

我们可以直接使用比如:

#ifdef DEBUG
//do sth.
#else
//do sth.
#endif

  或者:

#if DEBUG
//do sth.
#else
//do sth.
#endif

这两种操作会呈现出相同的结果,因为DEBUG这个宏定义被定义并且为1,这里说一下#if和#ifdef。#if会去判断条件是否成立,er#ifdef只会去判断这个宏定义是否被定义,如果被定义不管值是什么都会继续向下执行

当然我们也可以在代码中定义一些变量,通过在不同环境下切换变量值来切换,比如:

static let isRelease = true
static let serverURL = isRelease ? "prd url" : "dev url"

这样我们可以通过修改isRelease的值来执行不同的serverURL !

这种方式在我们的代码中用的比较多,我们目前用的Objective-C,我们定义了一个类来管理这些宏定义,定义宏定义不同的值来决定代码内部编译的走向,其实也没有很麻烦,笔者倒是觉得很方便的。

另外的一种方式——使用xcconfig文件:

我们在原来的两个环境的基础上增加一个环境配置来区分另外的渠道:在run或者archive的时候选择相对应的模式去编译!

这里需要做的东西很多,因为你增加了一个模式,就要继续增加关于该模式的配置:

关于这部分的东西我找了一篇文章提供参考,就不赘述了:http://www.cocoachina.com/ios/20160815/17360.html

iOS 设置不同环境下的配置 Debug Release 生产 测试 等等的更多相关文章

  1. Xamarin Studio在Mac环境下的配置和Xamarin.iOS常用控件的示例

    看过好多帖子都是Win环境装XS,Mac只是个模拟器,讲解在Mac环境下如何配置Xamarin Studio很少,也是一点点找资料,东拼西凑才把Xamarin Studio装在Mac上跑起来,如下: ...

  2. 【云和恩墨】性能优化:Linux环境下合理配置大内存页(HugePage)

    原创 2016-09-12 熊军 [云和恩墨]性能优化:Linux环境下合理配置大内存页(HugePage)   熊军(老熊) 云和恩墨西区总经理 Oracle ACED,ACOUG核心会员 PC S ...

  3. Windows环境下Git配置及使用

    Windows环境下Git配置及使用 一.安装包位置 Git下载地址https://git-scm.com/download/win TortoiseGit下载地址https://tortoisegi ...

  4. win10环境下VS2019配置NTL库

    win10环境下VS2019配置NTL库 1.下载 WINNTL库文件     https://www.shoup.net/ntl/download.html 2.创建静态库 文件->新建-&g ...

  5. 百度在线编辑器UEditor(v1.3.6) .net环境下详细配置教程之更改图片和附件上传路径

    本文是接上一篇博客,如果有疑问请先阅读上一篇:百度在线编辑器UEditor(v1.3.6) .net环境下详细配置教程 默认UEditor上传图片的路径是,编辑器包目录里面的net目录下 下面就演示如 ...

  6. 详细的图文教程来实现 eclipse环境下如何配置tomcat,并且把项目部署到Tomcat服务器上

    很多初学,尤其自学JavaWeb的朋友首次在eclipse下配置tomcat时,总会有种难下手的感觉,在此,通过图文解说的方法,最直观的向大家演示一遍该配置过程. 第一部分:eclipse环境下如何配 ...

  7. eclipse环境下如何配置tomcat

    eclipse环境下如何配置tomcat 很多初学,尤其自学JavaWeb的朋友首次在eclipse下配置tomcat时,总会有种难下手的感觉,在此,通过图文解说的方法,最直观的向大家演示一遍该配置过 ...

  8. resin-pro-4.0.34 服務器在windows环境下的配置

    resin-pro-4.0.34 服務器在windows环境下的配置(轉載请注明作者:icelong) 到caucho網站上http://www.caucho.com/download/下載resin ...

  9. eclipse:eclipse for java EE环境下如何配置tomcat服务器,并让tomcat服务器显示在控制台上,将Web应用部署到tomcat中

    eclipse环境下如何配置tomcat 打开Eclipse,单击"Window"菜单,选择下方的"Preferences".  单击"Server& ...

随机推荐

  1. English trip V1 - B 22. Here,There and Everywhere 无处不在 Teacher:Taylor Key: Be + Ving

    In this lesson you will learn to describe what you see. 课上内容(Lesson) # How's the weather today? 今天的天 ...

  2. ES7: 展开语法spread syntax:

    第一次遇到: payload = {...payload, manufacturer: state.manufacturers.filter(x => x._id === payload.man ...

  3. php二分法查找

    //二分查找(数组里查找某个元素) function bin_sch($array, $low, $high, $k) { if ($low <= $high) { $mid = intval( ...

  4. 排座椅(洛谷P1056)

    题目描述 上课的时候总会有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情.不过,班主任小雪发现了一些有趣的现象,当同学们的座次确定下来之后,只有有限的D对同学上课时会交头接耳. 同 ...

  5. leetcode-algorithms-28 Implement strStr()

    leetcode-algorithms-28 Implement strStr() mplement strStr(). Return the index of the first occurrenc ...

  6. WCF开发实战系列二:使用IIS发布WCF服务 转

    转 http://www.cnblogs.com/poissonnotes/archive/2010/08/28/1811141.html 上一篇中,我们创建了一个简单的WCF服务,在测试的时候,我们 ...

  7. MyBatis动态传入表名

    mybatis里#{}与${}的用法: 在动态sql解析过程,#{}与${}的效果是不一样的: #{ } 解析为一个 JDBC 预编译语句(prepared statement)的参数标记符. 如以下 ...

  8. JAVA正则表达式:Pattern、Matcher、String

    java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包.它包括两个类:Pattern和Matcher Pattern 一个Pattern是一个正则表达式经编译后的表 ...

  9. 关闭provider进程或者consumer进程后,会发生什么?

    下图是 provider,consumer 和注册中心之间的拓扑图: provider,consumer 以及管理控制台都是 zookeeper 的客户端,所以都和 zk 建立了tcp连接. 以接口 ...

  10. Qt Widgets——动作类与小部件菜单项

    本文主要涉及以下三个类: QAction ——QWidgetAction QActionGroup QAction可称为动作类,它一般可当作菜单中的项组成菜单,也可作为工具栏上的按钮,它主要由图标.文 ...