在ObjC中使用Swift库

时间:2015-04-11 16:48:22

标签: ios

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

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

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

2 个答案:

答案 0 :(得分: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"目标中的Swift文件将在包含此导入的Objective-C .m文件中可见

     

语句。有关从Objective-C代码使用Swift的信息,请参阅   使用Objective-C中的Swift。

答案 1 :(得分:0)

Objective-C使用者-> Swift静态库

Xcode版本10.2.1

创建Swift静态库或创建Swift静态库Target

创建一个图书馆项目

File -> New -> Project... -> Cocoa Touch Static Library -> Enter necessary information and choose Language -> Swift

准备Objective-C库以使用Swift     公开的类应从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