在ObjC中使用Swift库

问题描述 投票:1回答:2

有没有一种在ObjC中使用Swift库的简单方法?如果是,我该怎么办?

这里是我想使用的库:https://github.com/matthewpalmer/Regift

顺便说一句,如果你们知道在iOS中将视频转换为动画gif的另一种方法。谢谢!

ios
2个回答
2
投票

您应该看一下Apple的文档。

https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html

参考它,

从同一目标将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。


0
投票

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.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/**将添加到路径的末尾)
  • 如果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