创建target有两种方式,

1>.是通过新建target可以通过File-->New-->Target,然后选择其中一个模板来创建,app类型的target进行创建

2>.另一种方法是通过对原有的target做duplicate,复制一份

今天主要讲第二种方式创建target过程:

1、创建工程命名:CeShiTarget

2、在TARGET中选中项目,右键->Duplicate->Duplicate Only

3、经过以上步骤创建出来的target命名为之前工程名+copy(CeShiTarget copy),接下来做一下修改:

  • 双加CeShiTarget copy重命名如:OtherApp
  • 修改生成的CeShiTarget copy-Info.plist文件命名为OtherApp.plist
  • 设置OtherApp的Bundle Identifier如:come.huaban.OtherApp,修改Bundle display name 如:OtherApp
  • 在Build Setting中搜索packaging设置Info.plist File路径为我们创建的plist路径,Private Headers Folder Path修改为OtherApp/PrivateHeaders
  • 在manager schmes中修改新创建target的名称,选中新创建的target->设置->Duplicate->命名为OtherApp,此时可选择将CeShiTarget copy删除

4、生成一个新的target,一定会与原target有区别,这里可以定义预编译宏,来区分两个版本的不同代码,预编译宏可以在Build Settings中Preprocessor Macros定义,比如在我们新建的OtherApp中定义

分别双击Debug、Release点击+号按钮,输入CHANNEL=1

效果:

此时在代码中就可以根据宏做事情

#ifdef CHANNEL

//OtherApp中需要执行的代码

#else

//CeShiTarget中需要执行的代码

#endif

具体怎么执行,一下步骤(我将Main.storyboard删除了,纯代码写)

1>在TARGET(CeShiTarget、OtherApp)->Main Interface清空

2>appDelegate中:

self.window  = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
self.window.rootViewController = [ViewController new];

3>在ViewController:

#ifdef CHANNEL

self.btn.hidden = YES;

#else

self.btn.hidden = NO;

#endif

经过以上就完成设置

可以更进一步设置,如果想设置两个main.m、appdelegate文件分别管理两个应用,其实也很简单

1>选择CeShiTarget文件->show in finder ->创建文件夹命名为OtherApp,将文件夹拖入工程(记得add to targets选择OtherApp),此时工程中两个文件夹CeShiTarget、OtherApp在同一级

2>在OtherApp中创建类OtherAppDelegate继承UIResponder,注意target为OtherApp

创建类OtherAppDelegate,注意targets选择OtherApp

3>创建main.m文件,注意targets选择OtherApp,修改代码如下

3>可以讲OtherApp.plist->show in finder中移动到OtherApp文件夹下并移动到工程,在General中从新选择OtherApp.plist就可以了,在Build Setting ->packaging下查看info.plist file路径是否正确

4>设置AppDelegate、ViewController、CeShiTarget的main.m的target设置为CeShiTarget(点击.m文件在右侧可看到),不要勾选OtherApp

5>以后再创建类或文件是注意targets,否则报错找不到文件

最终目录如下:

同时可以分别设置AppIcon和LaunchImage:

1>Assets.xcassets中创建CeshiTargetAppIcon、CeshiTargetLaunchImage和otherTargetAppIcon、otherTargetLaunchImage,并分别设置图片

2>删除LauchScreen.storyboard,分别在TARGET中设置CeshiTarget和CeshiTarget,如下:

完成

iOS开发设计多个target的更多相关文章

  1. IOS开发设计思路

    我在做 iOS 开发的时候,发现自己在写程序的时候,常常处于两种状态的切换,我把这两种状态称为软件开发的上帝模式与农民模式.我先给大家介绍一下这两种模式的特点. 上帝模式 处于上帝模式时,我需要构思整 ...

  2. 100个iOS开发/设计面试题汇总

    常见问题 你昨天/这周学习了什么? 你为什么热衷于软件开发? 你对哪一种控制系统比较熟悉? 是否参与过GitHub项目? 是否参与过GitHub或其他同类型网站的iOS开源项目? 请描述一下你的iOS ...

  3. iOS 开发设计常用软件及工具整理

    1, xCode 2, AppCode 3, Skech 原型设计软件 4, Hype 动画设计工具 5, fontawsome 免费图表 6, Prepo icon, images.catlog 生 ...

  4. 100个iOS开发/设计面试题汇总,你将如何作答?

    原文: http://www.csdn.net/article/2015-01-19/2823604-ios-interview-questions 常见问题 你昨天/这周学习了什么? 你为什么热衷于 ...

  5. iOS开发——OC篇&消息传递机制(KVO/NOtification/Block/代理/Target-Action)

     iOS开发中消息传递机制(KVO/NOtification/Block/代理/Target-Action)   今晚看到了一篇好的文章,所以就搬过来了,方便自己以后学习 虽然这一期的主题是关于Fou ...

  6. iOS开发之浅谈MVVM的架构设计与团队协作

    今天写这篇博客是想达到抛砖引玉的作用,想与大家交流一下思想,相互学习,博文中有不足之处还望大家批评指正.本篇博客的内容沿袭以往博客的风格,也是以干货为主,偶尔扯扯咸蛋(哈哈~不好好工作又开始发表博客啦 ...

  7. iOS开发中如何创建多个target

    在开发iOS应用程序的过程中,经常需要根据不同的需求,切换到不同的项目配置,或者打不同的包(测试环境.开发环境.生产环境等等),如果每次都是手动配置,一则比较麻烦,二则容易配置错,那么有没有更好的方案 ...

  8. iOS开发:代码通用性以及其规范 第二篇(猜想iOS中实现TableView内部设计思路(附代码),以类似的思想实现一个通用的进度条)

    在iOS开发中,经常是要用到UITableView的,我曾经思考过这样一个问题,为什么任何种类的model放到TableView和所需的cell里面,都可以正常显示?而我自己写的很多view却只是能放 ...

  9. iOS的设计备忘录/资源集合(新手快速开发)

    iOS的设计备忘录 随着iOS7更新,风格走上扁平化,大部分iOS设计师及程序员都需要对自己的软件做相关调整,尺寸.Icon.UI等等,我在这里总结一下相关资料,以及提供一些关于iOS7设计素材. 一 ...

随机推荐

  1. 计算机网络关于IP地址的计算问题

    1.某校园网地址是202.100.192.0/18,要把该网络分成30个子网,则子网掩码应该是 (    ). A. 255.255.200.0       B. 255.255.224.0 C. 2 ...

  2. PLSQL Developer12连接远程Oracle xe 11g

    目标: .学习使用docker下载oracle xe 11g .使用PLSQL连上启动运行oracle xe 11g容器服务 1.准备工作 Linux 安装docker 下载PLSQL Develop ...

  3. 在 Server 2008 企业版下, 安装 IIS 7 后,勾选好 请求筛选模块了。安装完毕后,"请求筛选"却不显示!

    下载并安装 Administration Pack 到你的Windows Server 2008 上.可以通过下面的链接来下载Administration Pack. https://www.iis. ...

  4. [转]QT子线程与主线程的信号槽通信-亲测可用!

    近用QT做一个服务器,众所周知,QT的主线程必须保持畅通,才能刷新UI.所以,网络通信端采用新开线程的方式.在涉及到使用子线程更新Ui上的控件时遇到了点儿麻烦.网上提供了很多同一线程不同类间采用信号槽 ...

  5. Bellman_ford模板

    参考博客: https://blog.csdn.net/u011893609/article/details/81232124 https://blog.csdn.net/bestsort/artic ...

  6. 阿里图标库使用IconFont

    1.注册账号登陆 2.创建项目 3.搜索想使用的图标,添加入库,或者上传自己的图标入库 4.在图标库中,将添加的图标加入项目 5.将项目图标下载至本地 6.下载文件为 包括三种格式,使用方法不同 Un ...

  7. 关于Nginx

    访问 www.a.com 自动跳到 www.b.com(301跳转设置) server { listen 80; server_name www.a.com; rewrite ^/(.*)$  htt ...

  8. SVM的简单介绍

    ng的MI-003中12 ——SVM 一.svm目标函数的由来 视频先将LR的损失函数: 在上图中,先将y等于0 和y等于1的情况集合到一起成为一个损失函数,然后分别讨论当y等于1的时候损失函数的结果 ...

  9. VS2017上执行VS2013项目错误MSB802之解决方案

    进行想把我编写的数字图像处理软件MagicHouse更新到最新的VS2017开发环境下,原来的开发环境是VS2013.但是用VS2017打开项目并编译时,系统报错误MSB802,如下图所示. 其实Vi ...

  10. tornado学习篇(第二部)

    执行字符串表示的函数,并为该函数提供全局变量 本篇的内容从题目中就可以看出来,就是为之后剖析tornado模板做准备,     #!usr/bin/env python #coding:utf-8 n ...