一、创建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. Java中使用new Date()和System.currentTimeMillis()获取当前时间戳的区别(转)(Java进阶-性能提升)

    在开发过程中,通常很多人都习惯使用new Date()来获取当前时间,使用起来也比较方便,同时还可以获取与当前时间有关的各方面信息,例如获取小时,分钟等等,而且还可以格式化输出,包含的信息是比较丰富的 ...

  2. 电影TS/TC/SCR/R5/BD/HD/HC版本意思收集(转)

    一.版本说明: 1.CAM(枪版) CAM通常是用数码摄像机从电影院盗录.有时会使用小三角架,但大多数时候不可能使用,所以摄像机会抖动.因此我们看到画面通常偏暗人物常常会失真,下方的 字幕时常会出现倾 ...

  3. 【spring data jpa】启动报错:nested exception is java.util.NoSuchElementException

    spring boot项目中 使用spring data jpa 启动报错: org.springframework.beans.factory.UnsatisfiedDependencyExcept ...

  4. Linux 网卡驱动学习(二)(网络驱动接口小结)

    [摘要]前文我们分析了一个虚拟硬件的网络驱动例子,从中我们看到了网络设备的一些接口,其实网络设备驱动和块设备驱动的功能比较类似,都是发送和接收数据包(数据请求).当然它们实际是有很多不同的. 1.引言 ...

  5. MySQL常用SQL整理

    MySQL常用SQL整理 一.DDL #创建数据库 CREATE DATABASE IF NOT EXISTS product DEFAULT CHARSET utf8 COLLATE utf8_ge ...

  6. angular md-toast 颜色

    How to show md-toast with background color https://codepen.io/neilkalman/pen/jWBqve <div ng-contr ...

  7. 2016 第七届蓝桥杯 c/c++ B组省赛真题及解题报告

    2016 第七届蓝桥杯 c/c++ B组省赛真题及解题报告 勘误1:第6题第4个 if最后一个条件粗心写错了,答案应为1580. 条件应为abs(a[3]-a[7])!=1,宝宝心理苦啊.!感谢zzh ...

  8. cocos2d-x调用android内嵌浏览器打开网页

    cocos2d-x调用android内嵌浏览器打开网页,能够从入口传入网址,C++调用android 的api就可以实现. 方法也非常easy 1. 改动"cocos2dx\platform ...

  9. LinearLayout具体解释三:LayoutInflater创建View过程分析

    上次讲到以下这么一段代码,这段代码的作用就是解析xml文件成为view并显示到屏幕上的. @Override //设置contentview,也就是activity或fragment载入视图,即vie ...

  10. d3js 添加数据

    <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8&quo ...