我们在iOS开发中可能会遇到同时开发多个类似项目的情况。这些项目大同小异,有诸多代码可以共用,如果每个项目都分别开发,这在后期的迭代中会十分繁琐。为了解决这个问题,使用多Target开发是一种比较好的选择,本文就这一技术实现进行简要总结。
使用Xcode来开发项目,其中的Project是一个整体项目相当于一个仓库,包括了所有的代码和资源文件。而Target相当于一个具体的产品,包含了对于代码,资源文件的具体使用规则和配置。一个Project可以包含多个Target,也就是说通过不同Target我们可以生成不同的APP。
使用多Target来创建项目,就以我当前正在开发的亲戚买房APP为例。需求是这样的:亲戚买房是一个为买房人提供砍价服务的APP,APP的用户需要区分为用户,专家和砍价师三个用户群体。所以这里以Customer,Consul,Bargain三个Target来开发应用
执行了Duplicate操作之后的效果如下:
特别注意:我们在移动文件的时候可能需要重新引用文件到工程中,此时add文件的时候一定要注意选择Target,如果是共用文件一定要勾选对应的Target,类似AppDelegate这样文件的操作如下:
修改Xcode左上角的Target名称 选中Xcode左上角的创建工程时的Target(QQMF),选择Manage schemes
在如下的schemes中修改Target的名称,这里也可以删除多余的最初的QQMF
特别说明:QQMF是我们创建工程自带的Target,其实也可以修改它的名字以供自定义使用,而这里我们是直接删掉了它,这样之后,项目自带的info.plist也是没用的了,也可以删掉。
其他的Target也是同样的设置方式,只是要区分TargetType的值,分别是2,3(TargetType及其值都是自定义的)。然后就是在代码中的使用如下图,分别选择Xcode左上角不同的Target运行,查看控制台验证是否成功。
解决上述问题的比较优雅的做法是如下:
1.问题:invalid token at start of a preprocessor expression 原因:这是我在pch文件中判断target类型出现的错误,这句话的大致意思是:在预编译阶段,代码并未运行,无法判断宏定义的值。最后查找到原因是我在上述步骤设置宏定义的时候,手误设置了TargetType==1,这本是一句需要执行才能得到结果的代码。所以无法在#if的条件编译中通过。 解决:在条件编译中不使用代码运行时才生成的量即可。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有