iOS  swift的xcworkspace多项目管理(架构思想)

技术说明:

今天在这里分享 swift下的 xcworkspace多项目管理(架构思想),能为我们在开发中带来哪些便捷?能为我们对整个工程的维护,整理,模块解偶带来哪些优势?以及在swift与OC下的混编开发中的调用会遇到哪些问题?

带着问题探研:

(1).xcworkspace工程怎么创建?工程framework如何创建?主工程项目如何创建?

(2).主工程调用子工程framework如果配置?

(3).framework与framework之间如何调用?

(4).xcworkspace工程Pods的集成,framework的Pods第三的集成?

(5).Podfile文件的编辑,以及对应主工程,对应framework的编写方式?

--------------历史分析-----------------------

你还在搭建这样的框架吗?

缺点:

这种方式搭建的项目会随着项目功能不断的强大,从而会使模块文件越来越庞大,也会使项目维护思维近近模糊,

业务层代码与数据层代码和项目核心层代码相互交织,无法拆分,不符合一个中上等级以及长远发展公司型的构架思想!

来看下大公司项目的搭建吧:

优点很明确,个个模块可以拆分,架构思想清晰明朗,业务层独立清晰没有耦合

--------------xcworkspace项目创建--------------

File -> New -> Workspace

--------------子工程framework创建 (注意:新建主工程,不要创建成framework)

1 :File -> New -> Project -> framework (创建的是静态库)

2 :修改添加目标到workspace:(就是上一步创建的Workspace工程)

--------------主工程调用子工程framework相关配置--------------

第一:子工程暴露文件出来:必须顺序执行

BuildPhases -> Headers -> Public(只有放入共有栏,才能调用)->  导入项目代码文件(一般默认放在Project中)

BuildPhases -> Headers -> Public ->  中导入需要暴露给的OC 的头文件 (一般默认实现)

(注意:只有混编的时候才需要导入,也就是没有混编,framework中的.h文件可以删除)

BuildPhases -> Compile Sources ->  中导入项目代码文件

第二:把需要提供外部调用的类,属性和方法,加public修饰(swift)

第三:  编译(+B)一下工程,生成framework(重要,配置如果改动,删除对应生成的framework,重新编译生成)

——————分别—真机编译:

——————分别—模拟器编译:

Show  In  Finder ,确认生成framework

第四:主项目导入framework

把生成的framework拖入主项目中(这样做比较好),

———————不建议以下做法————————

//选择主项目 ->  General ->  Embedded Binaries -> 选择framework导入

(Embedded Binaries导入,会同步Linked Frameworks and Librares导入)

第五:在需要调用framework   ipa 的文件中  import 相关framework的工程名,即头文件,完成

------------------- framework之间相互调用 ipa --------------

General —>   Linked Frameworks and Libraries —> 导入指定framework

********到这里framework与主项目之间的调用已经完成,可以实现了!

--------------------Pods的集成------------------

第一:创建的主项目,创建的多静态库(注意必须在同一级目录下)

第二:终端cd 项目跟目录:

第三:终端指令:touch Podfile   (此处为空太),创建Podfile文件

第四:Podfile文件的编辑

案列:-------

platform :ios, ‘8.0’ ———可以写在最上面,标示公用

use_frameworks!    ———用cocoapods导入OC框架到swift项目必须写

workspace 'MyWorkspace.xcworkspace' //workspace文件名

project 'MyApp2/MyApp2.xcodeproj' //主工程路径„

target 'MyApp2' do

project 'MyApp2/MyApp2.xcodeproj' //工程路径

pod 'Masonry', '~> 1.0.2'

end

target 'MyApp1' do

project 'MyApp1/MyApp1.xcodeproj' //framework

pod 'SnapKit', '~> 1.0.2'

pod 'SDWebImage', '~> 1.0.2'

end

第五:终端下载指令 pod install

第六:framework调用第三方框架

查看项目:未导入,项目无法调用

导入查看项目:项目同步

注意:swift 版的framework调用OC写的第3方,必须在.h 里面声明头文件,才能调用

xcworkspace多项目管理简书到这里已经完成,如果有什么问题和指点可以QQ联系:497609288,欢迎来一起讨论技术问题

iOS swift的xcworkspace多项目管理(架构思想)的更多相关文章

  1. ReactiveCocoa常见操作方法介绍/MVVM架构思想

      1.ReactiveCocoa常见操作方法介绍. 1.1 ReactiveCocoa操作须知 所有的信号(RACSignal)都可以进行操作处理,因为所有操作方法都定义在RACStream.h中, ...

  2. Building gRPC Client iOS Swift Note Taking App

    gRPC is an universal remote procedure call framework developed by Google that has been gaining inter ...

  3. Restful架构思想

    java作为一门后端语言,其厉害之处在于web,大家比较熟知的各种网络应用,java都能做,那么在这个移动优先的时代,如何继续发挥java的强大呢.通常是让java作为一个app的服务端,为app客户 ...

  4. 剥析surging的架构思想

    1.前言   前面第一篇阐述了采用基于.NET CORE微服务架构,应用surging服务端与客户端之间进行通信的简单示例以及对于surging服务化框架简单介绍.在这篇文章中,我们将剥析surgin ...

  5. iOS Swift 模块练习/swift基础学习

    SWIFT项目练习     SWIFT项目练习2 iOS Swift基础知识代码 推荐:Swift学习使用知识代码软件 0.swift中的宏定义(使用方法代替宏) 一.视图  +控件 1.UIImag ...

  6. ios swift 实现饼状图进度条,swift环形进度条

    ios swift 实现饼状图进度条 // // ProgressControl.swift // L02MyProgressControl // // Created by plter on 7/2 ...

  7. 前端笔记之NodeJS(四)MongoDB数据库&Mongoose&自制接口&MVC架构思想|实战

    一.MongoDB数据库 1.1 NoSQL简介 随着互联网web2.0网站的兴起,传统的SQL数据库(关系数据库)在应付web2.0网站,特别是超大规模和高并发的SNS(social network ...

  8. 『练手』005 Laura.SqlForever历史遗留 的 架构思想缺陷

    005 Laura.SqlForever历史遗留 的 架构思想缺陷 我们 比较一下 Laura.WinFramework 和 Laura.XtraFramework 的差异: Laura.WinFra ...

  9. iOS Swift WisdomScanKit图片浏览器功能SDK

    iOS Swift WisdomScanKit图片浏览器功能SDK使用 一:简介      WisdomScanKit 由 Swift4.2版编写,完全兼容OC项目调用. WisdomScanKit的 ...

随机推荐

  1. Java简单知识梳理

    1. Java是单根继承结构:每个类都继承于Object类 ,这也就保证了每个对象都具备某些功能 2. Java类权限关键字: public -> protected -> default ...

  2. mac 通过brew安装php70 +php-fpm+ phalcon3.0.3

    安装php7.0.15 brew install homebrew/php/php70 brew install homebrew/php/php70-mcrypt brew install home ...

  3. Python实现采集wordpress整站数据的爬虫

    最近爱上了python,就非常喜欢使用python来练手,在上次的基础上完善一下代码,实现采集wordpress程序的网站的整站数据的爬虫程序,本站也是采用的wordpress,我就拿吾八哥网(htt ...

  4. 张高兴的 Windows 10 IoT 开发笔记:使用 ULN2003A 控制步进电机

    GitHub:https://github.com/ZhangGaoxing/windows-iot-demo/tree/master/ULN2003A

  5. ubuntu下codeblocks安装与中文化

    什么是Code::Blocks Code::Blocks是一个免费.开源.跨平台的集成开发环境,使用C++开发,并且使用wxWidgets做为GUI库.Code::Blocks使用了插件架构,其功能可 ...

  6. PHP中提问频率最高的11个面试题和答案

    问题:请用最简单的语言告诉我PHP是什么? 回答:PHP全称:Hypertext Preprocessor,是一种用来开发动态网站的服务器脚本语言. 问题:什么是MVC? 回答:MVC由Model(模 ...

  7. 如何通过写bat 安装Windows服务,本人亲测成功

    1. 安装的bat文件 @echo on color 2f mode con: cols=80 lines=25 @echo 请按任意键开始安装后台服务... pause cd /d %~dp0 Le ...

  8. Ubuntu16.04卸载opencv2.4.9并安装opencv3.2.0+contrib

    本文为作者原创,转载请注明出处(http://www.cnblogs.com/mar-q/)by 负赑屃 需要用到opencv中的surf和sift算法,机器上只有opencv3.2,没有扩展包,于是 ...

  9. Model Representation and Cost Function

    Model Representation To establish notation for future use, we’ll use x(i) to denote the “input” vari ...

  10. C++中的endl

    从开始接触C++到现在,一直以为语句 cout << "hello world!" << endl; 中的endl只是一个相当于C中的换行'\n':直到今天 ...