zoukankan      html  css  js  c++  java
  • 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集成

    --------------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 里面声明头文件,才能调用

    【四】:静态库与动态库分析

    ----------------补充 : 静态库与动态库的区别

     静态库有 .a 和 .framework

    动态库有.dylib 和 .framework

    后来.dylib动态库又被苹果替换成.tbd的形式

    静态库和动态库是相对编译期和运行期的:

    1.静态库在程序编译时会被链接到目标代码中,程序运行时将不再需要改静态库

    2.动态库在程序编译时并不会被链接到目标代码中,只是在程序运行时才被载入,因为在程序运行期间还需要动态库的存在

    总结:

    同一个静态库在不同程序中使用时,每一个程序中都得导入一次,打包时也被打包进去,形成一个程序。

    而动态库在不同程序中,打包时并没有被打包进去,只在程序运行使用时,才链接载入(如系统的框架如UIKit、Foundation等),所以程序体积会小很多,但是苹果不让使用自己的动态库,否则审核就无法通过

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

  • 相关阅读:
    HDU 1058 Humble Numbers
    HDU 1160 FatMouse's Speed
    HDU 1087 Super Jumping! Jumping! Jumping!
    HDU 1003 Max Sum
    HDU 1297 Children’s Queue
    UVA1584环状序列 Circular Sequence
    UVA442 矩阵链乘 Matrix Chain Multiplication
    DjangoModels修改后出现You are trying to add a non-nullable field 'download' to book without a default; we can't do that (the database needs something to populate existing rows). Please select a fix:
    opencv做的简单播放器
    c++文件流输入输出
  • 原文地址:https://www.cnblogs.com/tangjianfeng/p/7898903.html
Copyright © 2011-2022 走看看