一、创建xcworkspace文件。

在cocoapods安装后,项目文件里都会多一个后缀为.xcworkspace的文件。打开这个文件就相当打开最初创建的项目了。那么这个文件也就是用来管理项目的,它包含你创建的项目和cocoapods的项目。

如果手动创建.xcworkspace文件怎么创建,很简单。打开Xcode 点击file  -> new -> workspace。

创建workspace

二、添加文件到.xcworkspace

创建好之后打开,现在里面没有任何工程,那就要添加工程。添加方法有很多 ,可以把之前的工程文件后戳为.xcodeproj文件直接拖进去,也可以右键选择Add files to "XXXX.xcworkspace",选择你要加入的文件。

添加工程到workspace

或者创建新的工程,在选择存储路径的地方选择刚刚创建.workspace文件。

自动添加到workspace文件

这样添加多个就可以在一个文件里面管理多个工程的文件了。操作的也是直接操作的其他工程里的文件。

三、建立工程依赖(模块化)

如果你的工程在之前的设计模式是mvc的话,在一个工程里面肯定有很多文件和子文件来区分那个文件代表那个模块的代码。那么模块化就是把这些文件转为一个一个工程放在里面只要运行一个工程来调用其他工程的代码。首先要创建子工程,创建framework工程文件。

创建framework文件

在存储路径的时候也是选择.xcworkspace文件目录。

创建好的文件

大家应该都知道framework文件的作用,就是封装好的类,可以放到其他工程进行使用。但不能直接进行修改,在外部也看不到framework里面的代码。建立工程依赖就是利用这样的方法来实现模块化的项目框架。下面就是怎么把框架引入工程里。点击工程文件进入TARGETS ->Build Phases -> Link binary With Libraries 在里面添加framework库文件。

添加framework

在添加文件的页面第一个文件夹下就有之前创建的framework文件,直接选择就好了。

选择framework文件

这样就把创建framework文件添加到了第一个工程里面。现在我们在framework文件里面添加一个继承自NSObject的文件。在里面写一个“sayhello”的方法。

在framework里面创建类

创建方法之后就是要把这个类的头文件写到“header”文件里面。否在在运行时生成的文件不能被引用。在一块创建framework的时候打开里面会会发现只有一个.h文件,这个文件是“header”文件,把刚刚创建的类的头文件import到里面。

把要引用的文件写在头文件里

虽然添加好了头文件但是还是不能引用,如果现在去工程运用这个类,在编译时会报找不到该文件,因为还少一步。点击framework工程选择TARGETS ->Build Phases -> Headers 打开之后发现有Pubilc,Pravte,project三项,把Project里的文件拖到Pubilc里面。这样就完成了 。现在去第一个工程里面引用刚刚创建的类来执行“sayhello”方法。

调用‘sayhello’方法

到此为止就全部结束了 。如果有运行又崩溃的信息有两个解决方法。

四、解决运行时崩溃的现象。

看看在工程中引入framework文件时后面的status选项是Required 还是Optional

如果是Required就换成Optional  或者在framework文件里面设置库文件的类型。

选择framework类型

在这个类型选择上Required 对应的是Dynamic Library   Optional对应Static Libary  选择好之后运行就可以了。


到此为止全部结束

此贴给初学者看的,大神们如果有任何指正,欢迎评论思密达!

作者:绝版灬懒小孩
链接:https://www.jianshu.com/p/4a0841618726
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

iOS 使用.xcworkspace文件管理代码和工程依赖(实现项目模块化)的更多相关文章

  1. iOS多工程依赖

    导入准备工作 1.建立一个Framework & Library->Cocoa Touch Static Library 取名A,并在A里新建一个类用来测试 2.建立一个demo工程B ...

  2. iOS书摘之编写高质量iOS与OS X代码的52个有效方法

    来自<Effective Objective-C 2.0编写高质量iOS与OS X代码的52个有效方法>一书的摘要总结 一.熟悉Objective-C 了解Objective-C语言的起源 ...

  3. iOS如何上传代码到Github

    iOS如何上传代码到Github 很多iOS开发者想开源自己的代码或者demo,开源到Github是个不错的选择,那么如何上传我们的代码到Github,令所有人可以下载使用呢?这里我们的目的很明确,就 ...

  4. ios蓝牙开发(三)ios连接外设的代码实现:手机app去读写蓝牙设备。

    手机app去读写蓝牙设备....... 代码下载: 原文博客主提供Github代码连接,地址是:https://github.com/coolnameismy/demo ios连接外设的代码实现流程: ...

  5. iOS 蓝牙开发(二)iOS 连接外设的代码实现(转)

    转载自:http://www.cocoachina.com/ios/20150917/13456.html 原文作者:刘彦玮 上一篇文章介 绍了蓝牙的技术知识,这里我们具体说明一下中心模式的应用场景. ...

  6. iOS开发关于Block代码错误

    本文永久地址为http://www.cnblogs.com/ChenYilong/p/4052362.html ,转载请注明出处. iOS开发关于Block代码错误 Incompatible bloc ...

  7. iOS_SN_BlueTooth (二)iOS 连接外设的代码实现

    原文:http://www.cocoachina.com/ios/20150917/13456.html?utm_source=tuicool&utm_medium=referral 上一篇文 ...

  8. 【好程序员笔记分享】——iOS开发之纯代码键盘退出

    -iOS培训,iOS学习-------型技术博客.期待与您交流!------------ iOS开发之纯代码键盘退出(非常简单)     iOS开发之纯代码键盘退出 前面说到了好几次关于键盘退出的,但 ...

  9. ios蓝牙开发(二)ios连接外设的代码实现

    上一篇文章介绍了蓝牙的技术知识,这里我们具体说明一下中心模式的应用场景.主设备(手机去扫描连接外设,发现外设服务和属性,操作服务和属性的应用.一般来说,外设(蓝牙设备,比如智能手环之类的东西), 会由 ...

随机推荐

  1. 554 DT:SPM 163 smtp5,D9GowAD3RPYqSvxZjpMaAA--.4817S2 1509706293 坑爹的防垃圾邮件机制

    代码如下 package ssmtest; import java.io.File;import java.io.UnsupportedEncodingException;import java.ut ...

  2. erlang debugger

    http://erlang.org/doc/apps/debugger/debugger_chapter.html

  3. 词典对象(NSDictionary和NSMutableDictionary)

    词典(dictionary)顾名思义就是同由键-值组成的数据集合.与在词典中查找单词定义一样,可以通过对象的键从词典中获取需要的对象,看到 这里,你是不是想起了java中的map?和NSArray一样 ...

  4. 线性回归,logistic回归分类

    学习过程 下面是一个典型的机器学习的过程,首先给出一个输入数据,我们的算法会通过一系列的过程得到一个估计的函数,这个函数有能力对没有见过的新数据给出一个新的估计,也被称为构建一个模型.就如同上面的线性 ...

  5. 【翻译自mos文章】检查$ORACLE_HOME是否是RAC的HOME的方法以及relink RAC的Oracle binary的方法

    检查$ORACLE_HOME是否是RAC的HOME的方法以及relink RAC的Oracle binary的方法 来源于: How to Check Whether Oracle Binary/In ...

  6. Win7如何自定义鼠标右键菜单 添加新建EXCEL文档

    鼠标右键添加新建EXCEL文档.reg Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\.xls] "Content Type ...

  7. Hibernate中的条件查询完毕类

    Hibernate中的条件查询有下面三个类完毕: 1.Criteria:代表一次查询 2.Criterion:代表一个查询条件 3.Restrictions:产生查询条件的工具类

  8. vue-router钩子beforeRouteEnter函数获取到this实例

    官方文档: const Foo = { template: `...`, beforeRouteEnter (to, from, next) { // 在渲染该组件的对应路由被 confirm 前调用 ...

  9. Nginx 第三方模块的安装以及一致性哈希算法的使用

    Nginx 第三方模块的安装以及一致性哈希算法的使用 第三方模块安装方法总结: 以ngx_http_php_memcache_standard_balancer-master为例 1:解压 到 pat ...

  10. kubernetes容器探针检测

    系列目录 kubernetes提供了livenessProbe(可用性探针)和readinessProbe(就绪性探针)对容器的健康性进行检测,当然这仅仅简单的关于可用性方面的探测,实际上我们不仅仅要 ...