本篇内容主要讲解“SwiftPackage使用技巧及混编兼容问题怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SwiftPackage使用技巧及混编兼容问题怎么解决”吧!其中,type 的四种类型分别对应:library: 库(默认)executable: 可执行文件empty: 空项目system module: 系统模板项目一般情况下默认即可创建 package 之后,还可以使用 swift package generate-xcodeproj
创建一个Xcode项目来编译和调试代码在 Xcode 菜单栏中,选择 file -> add packages可以指定 package 的版本规则在 package 路径下,使用 git init
来创建一个仓库。之后上传至远端即可对于通过 cocoapods 引入的库,如果想在本地修改该库并提交的话,需要在 PodFile 里面把路径改成本地的,然后再 pod install
一下,比较麻烦但是修改 swift package 引入的库就很方便了,直接把 package 的文件目录拖到工程目录下即可。修改好提交到远端之后,右键 delete -> remove reference (move to trash 会删掉本地文件)然后 file -> packages -> update to latest,即可更新到最新的版本在每个 swift package 的目录下都有个 Package.swift
文件。内容如下:其中的字段分别表示:name: 库/项目名字products: 库/项目生成的东西,可以是 library 或者 executable. 同一个库/项目可以生成多个 library 或者 executabledependencies: 此库/项目所依赖的库,及依赖库的 URL 和版本等信息。如果依赖本地库的话,可以添加 .package(path:"local path")
targets: 库/项目生成的目标相较于 cocoapods,swift package 还是更加方便点的,而且是苹果自家的产品。但是目免费云主机域名前很多三方库都在 cocoapods 上,swift package 的大面积普及还需要一段时间Apple 官方文档里说:Targets can contain Swift, Objective-C/C++, or C/C++ code, but an individual target can’t mix Swift with C-family languages. For example, a Swift package can have two targets, one that contains Objective-C, Objective-C++, and C code, and a second one that contains Swift code.也就是说,SPM 是支持 objc 以及 C 系代码的。但是同一个 target 里面只能有一种语言,Swift 文件不能和 objc 文件放到一个 target 里。如果我们想要在一个 SPM 仓库里面同时放置两种语言的代码的话,就需要将仓库拆分为两个 target:其中,仓库文件结构应该为:Sources 文件夹拆分为两个子文件夹,分别是两个 target 的路径。Swift target 依赖 objc 的 target, objc 的 target 可以设置公开 header 的路径。这样,objc 以及 C/C++ 这些 C 系的文件都放在 MyModule_Objc
文件夹下,Swift 文件放到 MyModule
文件夹下,就可以在同一个 SPM 仓库下实现混编了。在上面的 package 设置里面可以看到一行预处理宏的定义:这个设置是用来标识当前库是通过 SPM 方式引入的。根据上文,SPM 模式下,当前库的 Swift 和 objc 是两个 target。因此,同一个库的 Swift 文件想要调用 objc 文件的话,必须引入 objc 的 target:但是,我们的库一般情况下还是要支持 cocoapods 的。在 cocoapods 模式下,同一个仓库的 Swift 和 objc 文件是不需要拆分为两个 target 的,pod 是通过桥接文件等来实现两者之间相互调用的。那么问题就来了,当使用 cocoapods 引入当前库时,import MyModule_Objc
是肯定会报错的,因为 pod 并不会生成 MyModule_Objc
。这时候,我们在 package 文件里预先定义的宏就派上用场了:只有在 SPM 模式下,才会 import MyModule_Objc
,这样就解决了与 cocoapods 的兼容问题。到此,相信大家对“SwiftPackage使用技巧及混编兼容问题怎么解决”有了更深的了解,不妨来实际操作一番吧!这里是百云主机网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
这篇文章主要介绍了Java如何实现统计在线人数功能的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java如何实现统计在线人数功能文章都会有所收获,下面我们一起来看看吧。监听器就是一个实现特定接口的普通java程序,这个程序专门用于…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。