澳门威利斯人_威利斯人娱乐「手机版」

来自 威利斯人娱乐 2020-04-09 23:18 的文章
当前位置: 澳门威利斯人 > 威利斯人娱乐 > 正文

制作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-CQuestion2. Objective-C调用Swift

这里自身新建二个品种 命名称为Mixed(Single View Application卡塔尔, 制造四个文书夹Classes用于存放源代码创造一个Objective-C Class O 世袭自NSObject 创立多个斯威夫特 Class S 世袭自NSObject

  • Answer1: 为斯威夫特源代码增加一个XXX.h头文件这里为Mixed-Bridging-Header 在那几个文件中程导弹入供给寻访的Objective-C 源代码的头文件。

图片 1headerConfig

突发性Xcode反应会微微延迟一点。手动编写翻译一下就可以。做完这么些布局,Swift就可以访谈Objective-C 源代码。代码如图:

图片 2swiftAccessObjc

  • Answer2: Objective-C 访谈Swift源代码 必要导入系统为品种更改的头文件,默以为Module Swift.h 当然自身也是能够校勘的, 导入之后,编写翻译一下(Xcode偶尔候有缓存,没事就应当编写翻译一下卡塔尔国具体代码配置如图

    图片 3ObjcAccessSwift

时至前日混编项目测量试验完了。

  • 制作Pod 创制Mixed.podspec文件 键入如下内容
Pod::Spec.new do |s| s.name = "Mixed" s.version = "0.0.1" s.summary = "链家网混编组件" s.description = "链家网混编组件混编测试" s.license = {:type => 'MIT', :file => 'LICENSE'} s.homepage = 'http://XXXDomain/XXX.privateGit/Mixed.html' s.author = { "男神寒" => "519224747@qq.com" } s.source = { :git => "http://http://XXXDomain/XXX.privateGit/Mixed.git", :commit => "bb1e3eb2d55468252f68fb4c1881ecc68517757a" } s.platform = :ios, '8.0' s.ios.deployment_target = '8.0' s.public_header_files = 'Mixed/Classes/*.h' s.source_files = 'Mixed/Classes/*.{h,m,swift}' s.requires_arc = true s.pod_target_xcconfig = { 'SWIFT_VERSION' => '2.3' }end

接下去可使用Cocoapods升高的命令行工具 pod spec lint Mixed.podspec 去校验,不过那几个法子须要总体的去编写翻译全体品种去检查实验,在作者的Computer需求编写翻译十分久,作者平常都习贯一贯设置测量试验。

遵从如下文件夹格式贮存 并付诸到个人货仓

图片 4podSpecSource

接下去新建五个测验工程MixedTest 在Podfile里面输入

source 'http://http://http://XXXDomain/XXX.privateGit/privatePodPodSpec.git' #我们自己的私有spec仓库的地址source 'https://github.com/CocoaPods/Specs.git' #官方仓库的地址use_frameworks! #一定要加上 Swift只支持动态库的形式platform :ios, '8.0'inhibit_all_warnings!target 'MixedTest' do pod 'Mixed'end

接下来开展pod install,完成未来编写翻译然后不出意外的编写翻译出错 图片 5compile Error接下去举办解析错误,由于斯威夫特只支持动态库(并不是全盘意义的动态库State of Qatar,所以大家的代码在Pod之后实际是叁个动态的Framework,在此个名称为Mixed的FrameWork里面,Objectice-C源代码是寄存在在Mixed的命名空间,所以没有必要Mixed-Bridging-Header.h也是足以的。并且也能正常的访问。所以问题应时而生在Objective-C调用Swift的有的。 由于斯威夫特是有命名空间的定义的。制作现在的Mixed-Bridging-Header坐落于Mixed的命名空间内。由于CocoaPods对源代码做的操作只是简短的复制。并无法校订源代码。咱们就需求在根源做动作。 改正源工程的装置图片 6newSetting编写翻译通过,然后更新Mixed.podspec文件然后再次提交 重新安装 此时编写翻译MixedTest项目,发现就算文件找到驾驭而还报错。图片 7undefineIdtntify走入Mixed-斯维夫特.h文件后开采除去有些系统的定义,并未有找到我们定义的Swift代码。 经查询资料获悉,斯威夫特的暗许访谈权限是internal,那么些访问权限是力不能支被表面访问的,所以必要改过被Objective-C访谈到的斯威夫特源代码相关的拜谒权限为Public 或许open/public。 至此提交,安装,编写翻译通过。

  • References
  1. sing Swift with Cocoa and Objective-C (Swift 3.0.1)
  2. CocoaPods

本文由澳门威利斯人发布于威利斯人娱乐,转载请注明出处:制作Swift和Objective-C Mixed的Pod

关键词: 澳门威利斯人 Objective Swift Pod