Xcode创建子工程以及工程依赖
https://www.jianshu.com/p/f2bc7d155a86
项目需求:代码抽层,业务逻辑和数据处理要高度抽离,模块化,需要将model 层 和 network层抽离出来。所以,就考虑建一个公共工程,每次新建项目,只是需要依赖这个工程就行了,代码的模块化之后我们可以对每一个模块持续优化集成,便于实现一些更加复杂的需求和结构设计。
思路设计:①MonkeyApp,用于存放公共的库。②MonkeyAppDemo用于写demo和示例。
具体步骤:
1、创建MonkeyApp工程,注意这里被依赖的工程要是Cocoa Static Library。

2、创建MonkeyAppDemo工程。在MonkeyAppDemo上面右键,添加文件,选中MonkeyApp.xcodeproj,建立依赖关系。

3、在MonkeyAppDemo里面import相关的类会出现找不到的error,会编译错误。需要进行下面的操作:

4、编译一次还是有错误。还是编译还出现找不到相关的文件。这个时候可以判断的是,编译的结果没有能够正确的依赖,进行下面的步骤 ;添加target的依赖关系,保证编译MonkeyAppDemo的时候先编译MonkeyApp。选中MonkeyAppDemo Target,然后选中其Build phases选项,添加MonkeyApp target。
5:如果需要引入MonkeyApp中的图片资源,需要copy file选项勾选
6:存在category的时候,使用category会导致Crash解决办法是在Sample里面添加编译的命令

7:最终效果,这样就可以完成model层和network层的抽层了。

Xcode创建子工程以及工程依赖的更多相关文章
- iOS创建子工程
实际开发中,我们可能会同时开发好几个端,比如楼主目前开发的家教平台,需要老师端,家长端,助教端三个端.有很多工具方法,或者封装的自定义控件都是可以复用的.我们就可以把公用的代码抽取出去,新建一个工程, ...
- springboot 创建子父工程
1.创建子父工程 2.添加pom配置文件 2.1 父工程pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" ...
- eclipse创建多模块maven工程小结
创建maven工程步骤 1 新建一个maven工程,如下图所示: 2 选择项目名称(或项目目录),如下图所示: 3 填写maven工程相关信息,注意父maven工程的packing方式是pom,如下图 ...
- maven项目 子父级工程。
一 .什么是 maven 子父级工程? 建立一个maven项目,然后在该项目 下创建一个module,子级的maven,他继承于父级项目. 1.新建立 maven项目,file ------new- ...
- 在Xcode5和Android Studio添加工程间的依赖
正在编辑中,尚未完成 先看看ios的target是什么,请先参看http://www.cocoachina.com/bbs/read.php?tid-10884.html做个大概了解 这里有一篇文章, ...
- 创建springboot的聚合工程(一)
比起传统复杂的单体工程,使用Maven的多模块配置,可以帮助项目划分模块,鼓励重用,防止POM变得过于庞大,方便某个模块的构建,而不用每次都构建整个项目,并且使得针对某个模块的特殊控制更为方便.接下来 ...
- MAVEN创建JAVA的Web工程
maven命令:http://blog.csdn.net/edward0830ly/article/details/8748986 1.创建MAVEN的Web工程 mvn archetype:gene ...
- 解决myeclipse/eclipse创建或导入maven工程时引发的问题
起因: 最近学习maven,按照教程把命令行创建的maven工程导入到eclipse/myeclipse,由于库中没有一些依赖包,所以在导入工程的时候开发工具自动下载依赖包.可是,由于天朝特殊环境的问 ...
- maven创建分model的工程
创建parentmvn archetype:generate -DgroupId=com.hikvision -DartifactId=aocp-parent -DarchetypeArtifactI ...
随机推荐
- 慎用--skip-grant-tables命令
该命令作用是跳过授权表,也就是说谁都能进入mysql看到所有数据表,输入任意字符账号密码都可以 当忘记账号密码时可以使用改命令修改密码,但是要随用随关,重启mysql,不然服务器上会有很大的风险. 介 ...
- mac visual stdio 2019 自动格式化代码的选项
1 打开Visual Stdio >点开菜单的visual stdio 的选项卡>首选项>文本编辑>行为>保存时格式化文档 (将这个选项 勾上)>确定 2 以后代码 ...
- 【vue】 router.beforeEach
import store from '@/store' const Vue = require('vue') const Router = require('vue-router') Vue.use( ...
- Tex 一些命令
1. [!htp] 可以使这个内容跟随在前面的内容后面 假如前面是一段文字,后面是一幅图像,不知什么原因跑到其他地方去了.这时加个[!htp]可以使他紧紧跟在后面 ergdsgagdfgdfgfgaf ...
- 题解 SP5271 XOINC - A Coin Game
SP5271 XOINC - A Coin Game 双倍经验:P2964 [USACO09NOV]硬币的游戏A Coin Game O3做法(TLE):枚举i,j,k,即剩下i枚金币,上一轮选了j枚 ...
- Pandas 数据分析——超好用的 Groupby 详解
在日常的数据分析中,经常需要将数据根据某个(多个)字段划分为不同的群体(group)进行分析,如电商领域将全国的总销售额根据省份进行划分,分析各省销售额的变化情况,社交领域将用户根据画像(性别.年龄) ...
- MNIST数据集环境搭建
由于换了电脑,ubuntu是重新下载的,因此记录一些相关数据集的搭建: 首先是data数据集,在第七讲中 我们需要建立data文件夹,并将数据集放进去 再就是model模型 我们应该新建一个model ...
- 使用prepareStatement执行的sql语句的写法:
使用prepareStatement对象执行的增.删.改.查sql语句: 查: String sql = "SELECT * FROM 表名 WHERE loginId=? AND pas ...
- AcWing 846. 树的重心
#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> ...
- 【代码总结】Struts2 Action接受参数方式的对比
一.属性方式 1.Action中:对应表单参数的setter.getter 2.页面中 :Form中元素name取值属性名 <s:property value="属性名" ...