我们项目中,默认建好是只有一个target的,但是,一些场景中,多target能帮助我们更好的使用项目。

场景1:

同一项目,一般会分不同环境:开发环境、测试环境、正式(生产)环境。

这就涉及到一个请求接口的区别,一般我们可能会定义多个,每次切换环境,就用代码注释解决,的确不是太方便。

其次一个,就是某一类特殊项目,主功能都一样,可能就是只需要更换icon图标、bundleID等等信息,需要发布多款APP,这种情况下,你如果每次发布一个就手动替换这些信息,真的要哭了。。。

场景2:

就是同一产品会有两种客户端构成,现在有很多这种场景下的项目,类似滴滴的司机端和乘客端,教学项目的学生端和教师端等等。。

这种项目,会生成2个App,但其中很多东西可以共用,因此在一个项目里创建管理,会更好更方便。

============对于场景1 :=============

1、打开项目,找到TARGETS,选中第一个右击

2、创建完,会这样,我们之间点击重命名

        --->      

3、我们查看Schemes,这边需要手动更改

--------->

4、修改plist文件,同样,我们的plist文件拷贝过来后,重命名,但这边有点特殊,需要额外做一步操作。

重命名后,删除,记住不要删本地,如图

然后,从本地再拖进来,选择对应的target

最后,在这边choose添加进来。

这样做的原因就是,如果仅仅重命名了,系统还是识别不了的,必须经过这几步,重新让系统识别plist文件。

5、上面准备工作基本完成,所以我们可以得到这样的targets

现在如果我要对不同环境下设置不同的相关配置描述,打开build Settings

如果OC项目:搜索macros关键字

在这边添加需要的预处理指令, 最好在debug和release都加一下,比如:

如果是Swift项目,Swift比较特殊,不能在这边设置(设置无效),不过swift提供了另外一种方式设置:

这里注意两点:

1、加“”,用字符串格式

2、先写-D,一定要写,否则无效,所以要写两个指令,如上图所示

6、如何使用呢?

OC项目,可以直接在共用设置.h文件或pch文件内设置。

Swift项目,可以直接在定义文件里写,我这边用的Swift测试,就直接写swift了:

然后我们使用的时候,就可以得到结果了,比如我在test的target下run:

结果:

同理,除了不同环境下的请求url,还可以在这里设置一些每个环境下的独有内容,很方便。

如果需要Demo点击这里获取

============对于场景2:============

1、正常新建一个项目,完成后  如下:

2、这一步就是添加一个新的target

3、添加完,就会发现多出一个新的,变成这样。

还有人会在target管理处,点击+添加,不过不建议这样,这样添加也能实现,不过系统会自动添加不全,还需手动补全一些文件。

当然实现也是可以的。

iOS同一项目多个Target的快速实现方法 - 两种使用场景详解的更多相关文章

  1. iOS同一项目多个Target的快速实现方法

    之前写过这种场景下的项目,比如类似滴滴的司机端和乘客端,学生端和教师端等等.. 最近有人问我,就整理记录如下: 1.正常新建一个项目,完成后  如下: 2.这一步就是添加一个新的target 3.添加 ...

  2. Spring Boot 2.x 快速入门(下)HelloWorld示例详解

    上篇 Spring Boot 2.x 快速入门(上)HelloWorld示例 进行了Sprint Boot的快速入门,以实际的示例代码来练手,总比光看书要强很多嘛,最好的就是边看.边写.边记.边展示. ...

  3. Django---Http协议简述和原理,HTTP请求码,HTTP请求格式和响应格式(重点),Django的安装与使用,Django项目的创建和运行(cmd和pycharm两种模式),Django的基础文件配置,Web框架的本质,服务器程序和应用程序(wsgiref服务端模块,jinja2模板渲染模块)的使用

    Django---Http协议简述和原理,HTTP请求码,HTTP请求格式和响应格式(重点),Django的安装与使用,Django项目的创建和运行(cmd和pycharm两种模式),Django的基 ...

  4. 开源项目SMSS发开指南(五)——SSL/TLS加密通信详解(下)

    继上一篇介绍如何在多种语言之间使用SSL加密通信,今天我们关注Java端的证书创建以及支持SSL的NioSocket服务端开发.完整源码 一.创建keystore文件 网上大多数是通过jdk命令创建秘 ...

  5. 开源项目SMSS发开指南(四)——SSL/TLS加密通信详解

    本文将详细介绍如何在Java端.C++端和NodeJs端实现基于SSL/TLS的加密通信,重点分析Java端利用SocketChannel和SSLEngine从握手到数据发送/接收的完整过程.本文也涵 ...

  6. Cisco设备IOS的恢复方法 两种方法

    如果不小心把Router或者Switch的IOS删除了,特别是Flash中的IOS和ROM中的Mini IOS都没有了的话,连启动都不行的话,有什么方法恢复它呢?答案是方法不只一种,而是两种.其实是我 ...

  7. 什么是渲染目标(render target)&& 渲染到纹理(Render To Texture, RTT)详解

    渲染到纹理(Render To Texture, RTT)详解 RTT是现在很多特效里面都会用到的一项很基本的技术,实现起来很简单,也很重要.但是让人不解的是网上搜索了半天只找到很少的文章说这个事儿, ...

  8. servlet创建项目过程中,servlet内容重写的两种搭建,tomcat的配置,class的存放位置,web.xml的搭建等注意事项与易错点

    运行一个servlet项目:需要做这些前提工作: 1.配置tomcat,在server选项卡的设置也就基本的设置,HTTP port与JMX port等端口号:基本都是默认的.这里需要注意的是,有的教 ...

  9. elasticsearch系列二:索引详解(快速入门、索引管理、映射详解、索引别名)

    一.快速入门 1. 查看集群的健康状况 http://localhost:9200/_cat http://localhost:9200/_cat/health?v 说明:v是用来要求在结果中返回表头 ...

随机推荐

  1. 读取 XML 数据时,超出最大字符串内容长度配额 (8192)

    格式化程序尝试对消息反序列化时引发异常: 尝试对参数 http://www.thermo.com/informatics/xmlns/limswebservice 进行反序列化时出错: Process ...

  2. 【BZOJ】【1014】【JLOI2008】火星人prefix

    Splay/二分/Hash 看了网上的题目关键字(都不用点进去看……我也是醉了)了解到做法= =那就上呗,前面做了好几道Splay的题就是为了练手搞这个的. Hash判断字符串是否相同应该很好理解吧? ...

  3. OTL翻译(10) -- OTL的流缓冲池

    OTL的流缓冲池 一般来讲,流一般作为一个局部的变量被使用,当使用完毕后就立刻关闭,如果需要再次使用就需要再次的声明变量,如此循环.OTL流的缓冲池(内存池)是一个解决以往的流性能低下的一个机制.当流 ...

  4. max-sum-of-sub-matrix-no-larger-than-k

    根据上一篇文章提到的参考文档: https://leetcode.com/discuss/109749/accepted-c-codes-with-explanation-and-references ...

  5. russian-doll-envelopes

    https://leetcode.com/problems/russian-doll-envelopes/ // Use map (Russian doll number -> vector o ...

  6. C# WinForm开发系列 - GDI+【转】

    http://blog.csdn.net/blue_sky6/article/details/53811435?locationNum=6&fps=1 C# WinForm开发系列 - GDI ...

  7. 基于json的jquery地区联动探索

    贴一个基于jquery联动的代码,相信这样的代码有一大把,就当是jquery的练手吧, 写这个东西的初衷是来之于新浪微博,在新浪微博帐号设置里面有个地区的选项,使用js写的,想把它的代码给截获下来,可 ...

  8. 在ubuntu下手机无法挂载的问题

    在ubuntu下手机无法挂载的问题 , 原因之一是,usb数据线连接在了机箱前面,可以尝试连接到机箱后面的USB接口试试,我当时遇到过这样的情况,这样解决的.

  9. YOURLS' API

    YOURLS' API 特征 生成或获取现有的短URL,带有顺序关键字或自定义关键字获取一些关于你的链接的统计信息:点击链接,点击最少的链接,最新链接输出格式:JSON.XML或简单的原始文本Auth ...

  10. hadoop伪分布集群搭建

    系统环境:ubuntu server16.04 1.root@master:~$ vim /etc/hostname #修改主机名 master 2.root@master:~$ reboot #重启 ...