一、创建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. upper_bound——自己的实现

    int BSearch() { int ln(1),rn(n+1); while(ln+1<rn) { int mid=(ln+rn)>>1; if (Check(mid)) { l ...

  2. 深入理解Activity启动流程(一)–Activity启动的概要流程

    概述 Android中启动某个Activity,将先启动Activity所在的应用.应用启动时会启动一个以应用包名为进程名的进程,该进程有一个主线程,叫ActivityThread,也叫做UI线程. ...

  3. poj-3744-Scout YYF I-矩阵乘法

    f[i]=f[i-1]*p+f[i-2]*(1-p); 正好能够用矩阵加速. . . . #include<stdio.h> #include<string.h> #inclu ...

  4. Aws Dynamodb数据导出到S3

    本节将描写叙述怎样从一个或多个DynamoDB的表导出数据到S3的bucket中.在运行导出之前你须要提前创建好S3的bucket. 注意 假设你还没有使用过AWS Data Pipeline,在运行 ...

  5. adb命令具体解释(二)——手机缺失sqlite3时操作数据库的多种解决方式

    在android应用开发无处不在SQLite数据库的身影.那么在开发中怎么使用adb命令操作数据库的功能呢? 以下我们将完整的介绍与数据库操作相关的命令集及当手机缺少sqlite3的时候的多种解决方式 ...

  6. Google Chrome浏览器之删除Goolge搜索结果重定向插件Remove Google Redirects

    https://chrome.google.com/webstore/detail/remove-google-redirects/ccenmflbeofaceccfhhggbagkblihpoh?h ...

  7. PCIE、UART、HDA、I2C、SMBUS、SPI、eSPI、USB、PS2、CAN、SDIO等数据传输协议简介

    M.2 wife一般支持USB.SDIO.PCIE三种传输 1.摄像头 (1)MIPI CSI (2)USB mipi摄像头模组IC简单便宜(小),应为一般把ADC解码在CPU端. MIPI摄像头简介 ...

  8. 对OpenCV中Haar特征CvHaarClassifierCascade等结构理解

    首先说一下这个级联分类器,OpenCV中级联分类器是根据VJ 04年的那篇论文(Robust Real-Time Face Detection)编写的,查看那篇论文,知道构建分类器的步骤如下: 1.根 ...

  9. vue入门-常用指令操作

    指令:v-xx组成的特殊指令,如果一个标签中有指令会默认替换原有的书 v-model:实现数据和视图的双向绑定 v-text:在元素中插入值 v-html:在元素中插入标签或者插入文本 v-if:根据 ...

  10. properties配置文件读取

    1.配置文件test.properties: test_123=admin 注:value 可用单引号,双引号,不用引号修饰 2.工具类PropertiesUtil: package com..... ...