iOS技术积累

不管生活有多不容易,都要守住自己的那一份优雅。

制作Swift和Objective-C Mixed的Pod

    • 知识背景

      1. What is CocoaPods
      2. What did CocoaPods do?

      In Xcode, with references directly from the ruby source, it:

      1. Creates or updates a workspace.
      2. Adds your project to the workspace if needed.
      3. Adds the CocoaPods static library project to the workspace if needed.
      4. Adds libPods.a to: targets => build phases => link with libraries.
      5. Adds the CocoaPods Xcode configuration file to your app's project.
      6. Changes your app's target configurations to be based on CocoaPods's.
      7. Adds a build phase to copy resources from any pods you installed to your app bundle. i.e. a 'Script build phase' after all other build phases with the following:
      • Shell: /bin/sh
      • Script: ${SRCROOT}/Pods/PodsResources.sh

    大意是,CocoaPods是一个依赖管理工具,使用CocoaPods可以自动的去分析依赖,然后通过脚本去将第三方依赖复制编译为静态库然后链接进项目。~~~等。

    • 制作Pod

    有时候我们有把代码做成一个轮子给别人用情况,我们需要按照官方的教程Making CocoaPods去制作。

    教程分为2类 :

    1. 发布公共Pod给所有开发者使用。
    2. 制作私有Pod。 方法较为简单。自行查阅资料即可。这里不再赘述。

    • Swift和Objective-C Mixed

      参考官方的文档(文末指出),混编里面包含有2种调用情况:

      Question1. Swift调用Objective-C
      Question2. Objective-C调用Swift

    这里我新建一个项目 命名为Mixed(Single View Application), 创建一个文件夹Classes用于存放源代码
    创建一个Objective-C Class O 继承自NSObject 创建一个Swift Class S 继承自NSObject

    • Answer1: 为Swift源代码添加一个 XXX.h头文件这里为Mixed-Bridging-Header 在这个文件中导入需要访问的Objective-C 源代码的头文件。

    headerConfig

    有时候Xcode反应会稍微延迟一点。手动编译一下即可。做完这个配置,Swift即可访问Objective-C 源代码。
    代码如图:
    swiftAccessObjc

    • Answer2: Objective-C 访问Swift源代码 需要导入系统为项目生成的头文件,默认为Module+Swift.h 当然自己也是可以修改的, 导入之后,编译一下(Xcode有时候有缓存,没事就应该编译一下

    评论卡