iOS swift的xcworkspace多项目管理(架构思想)
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多项目管理(架构思想)的更多相关文章
- ReactiveCocoa常见操作方法介绍/MVVM架构思想
1.ReactiveCocoa常见操作方法介绍. 1.1 ReactiveCocoa操作须知 所有的信号(RACSignal)都可以进行操作处理,因为所有操作方法都定义在RACStream.h中, ...
- Building gRPC Client iOS Swift Note Taking App
gRPC is an universal remote procedure call framework developed by Google that has been gaining inter ...
- Restful架构思想
java作为一门后端语言,其厉害之处在于web,大家比较熟知的各种网络应用,java都能做,那么在这个移动优先的时代,如何继续发挥java的强大呢.通常是让java作为一个app的服务端,为app客户 ...
- 剥析surging的架构思想
1.前言 前面第一篇阐述了采用基于.NET CORE微服务架构,应用surging服务端与客户端之间进行通信的简单示例以及对于surging服务化框架简单介绍.在这篇文章中,我们将剥析surgin ...
- iOS Swift 模块练习/swift基础学习
SWIFT项目练习 SWIFT项目练习2 iOS Swift基础知识代码 推荐:Swift学习使用知识代码软件 0.swift中的宏定义(使用方法代替宏) 一.视图 +控件 1.UIImag ...
- ios swift 实现饼状图进度条,swift环形进度条
ios swift 实现饼状图进度条 // // ProgressControl.swift // L02MyProgressControl // // Created by plter on 7/2 ...
- 前端笔记之NodeJS(四)MongoDB数据库&Mongoose&自制接口&MVC架构思想|实战
一.MongoDB数据库 1.1 NoSQL简介 随着互联网web2.0网站的兴起,传统的SQL数据库(关系数据库)在应付web2.0网站,特别是超大规模和高并发的SNS(social network ...
- 『练手』005 Laura.SqlForever历史遗留 的 架构思想缺陷
005 Laura.SqlForever历史遗留 的 架构思想缺陷 我们 比较一下 Laura.WinFramework 和 Laura.XtraFramework 的差异: Laura.WinFra ...
- iOS Swift WisdomScanKit图片浏览器功能SDK
iOS Swift WisdomScanKit图片浏览器功能SDK使用 一:简介 WisdomScanKit 由 Swift4.2版编写,完全兼容OC项目调用. WisdomScanKit的 ...
随机推荐
- [转载]AI教师正来势汹汹,教师饭碗堪优
(原文标题:开门,机器人老师来了) 一. 开门,机器人老师到了 国庆几天,河南刚刚上演一幕新科技的大戏: 计算机和人展开了为期四天的人机大战.这一次,对垒的双方不再是李世乭和阿尔法狗,而是教师和人工智 ...
- 【机器学习实战】第7章 集成方法 ensemble method
第7章 集成方法 ensemble method 集成方法: ensemble method(元算法: meta algorithm) 概述 概念:是对其他算法进行组合的一种形式. 通俗来说: 当做重 ...
- win10 uwp 自定义控件 SplitViewItem
本文主要是因为汉堡菜单里面列出的菜单很多重复的图标和文字,我把它作为控件,因为是随便写,可能存在错误,如果发现了,请和我说或关掉浏览器,请不要发不良言论. 我们使用汉堡菜单,经常需要一个 需要一个图标 ...
- Xamarin Forms 进度条控件
本文翻译:http://xamlnative.com/2016/04/14/xamarin-forms-a-simple-circular-progress-control/ 里面都是胡说的,如果看不 ...
- Web Fragment在项目中的使用
Web Fragment 是什么 - 它是在 servlet 3.0开始支持的,可以把一个dy web项目拆分为多个项目,解耦合,使其在项目中开发效率提高,下面我演示简单的项目创建过程 用eclips ...
- java字串加密
字串加密 1.设计思想: (1)加密方法,字符串的每一个字符都代表这个字符往后的第三位,最后三个字符代表,开始的三个字符. (2)解密方法,字符串的每一个字符都代表这个字符往前的第三位,开始三个字符代 ...
- Zookeeper 笔记-角色
leader:提供读写服务,负责投票的发起和决议,更新系统状态 follower:为客户提供读服务,如果写服务则转发给leader,选举过程参与投票 observer:为客户端提供读服务,如果是写服务 ...
- git上传遇到 GitHub could not read Username 的解决办法
Gitversion 1.8.5.2 执行git push命令异常,如下: Push failed Failed with error: unable to read askpass response ...
- 兼容性问题--HTML+CSS
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Consolas; color: #a5b2b9 } span.Apple-tab-span ...
- Python 由__dict__和dir()引发的一些思考
关于__dict__和dir()的区别和作用请参考这篇文章:http://blog.csdn.net/lis_12/article/details/53521554 说下我当时遇到的问题: class ...