在ObjC中使用Swift库
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在ObjC中使用Swift库相关的知识,希望对你有一定的参考价值。
有没有一种在ObjC中使用Swift库的简单方法?如果是,我该怎么办?
这里是我想使用的库:https://github.com/matthewpalmer/Regift
顺便说一句,如果你们知道在ios中将视频转换为动画gif的另一种方法。谢谢!
您应该看一下Apple的文档。
参考它,
从同一目标将Swift代码导入Objective-C
使用此语法将该目标中的Swift代码导入该目标中的任何Objective-C .m文件并替换相应的名称:OBJECTIVE-C
import "ProductModuleName-Swift.h" The Swift files in your target will be visible in Objective-C .m files containing this import
声明。有关从Objective-C代码使用Swift的信息,请参阅使用Objective-C中的Swift。
Objective-C consumer - > Swift静态库
Xcode版本10.2.1
创建一个Swift静态库或Create Swift静态库Target
创建一个库项目
File -> New -> Project... -> Cocoa Touch Static Library -> Enter necessary information and choose Language -> Swift
准备Objective-C库以使用Swift Exposed类应该从NSObject
扩展(添加import Foundation
),而暴露的方法应该有@objc
注释
构建库并查找生成的输出(确保为与客户端代码相同的流程体系结构构建库)。默认情况下,它将位于DerivedData
文件夹的子文件夹中。(如果在开发过程中删除DerivedData
并重新生成它,则可以更改)
Products group -> lib<module_name>.a -> Show in Finder
该目录包括
lib<module_name>.a
- 内置静态库- 包含
include
文件夹的module_name
文件夹,包含.h
文件 - 公共接口/定义和module_name.modulemap
文件
使用Swift静态库
Link Binary With Libraries
Project editor -> select a target -> Build Phases -> Link Binary With Libraries -> add -> Add Others... -> point to `lib<module_name>.a` file
添加Library Search paths
Project editor -> select a target -> Build Settings -> Search Paths -> Library Search paths -> add path to the parent of `lib<module_name>.a` file
添加Header Search Paths
Project editor -> select a target -> Build Settings -> Search Paths -> Header Search Paths -> add path to the parent of `.swiftmodule` folder
将空.swift file
添加到Objective-C项目中。当Xcode要求按下创建Bridging Header
(它将创建module_name-Bridging-Header.h
)并在Project editor -> select a target -> Build Settings -> Swift Compiler - General -> Objective-C Bridging Header
中设置此文件的路径
- 当您设置
path
时,您可以定义父文件夹之一的路径并设置recursive
(/**
将添加到路径的末尾)。例如,您可以使用path
参数将Build
污染到recursive
目录。 - 如果
patch
包含空格 -,你应该使用
来逃避它们或用双引号
""
封闭路径
将模块导入Objective-C客户端代码
#import "module_name-Swift.h"
Objective-C consumer -> Objective-C static library
Swift consumer -> Swift static library
Swift consumer -> Objective-C static library
以上是关于在ObjC中使用Swift库的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Swift Int 零在 objc 代码中被读取为零?
如何避免在带有 Swift 4 的 iOS 11 中使用带有刷新控件的 @objc?