虽然在Swift中和C语言交互很方便,但是有时候我们想调用但是源码实现又不给别人使用。那么问题来了,怎么办呢?其实和Windows,Android一样的。Windows是制作.dll动态链接库,Android是.so静态。iOS是Unix,当然也属于自己的静态库啦。.a文件就是iOS的静态库。今天就给大家简单演示下iOS中怎么创建.a表态库和调用。
首先,我们创建一个静态库工程,如下图:

然后会自动生成一个.h和.m文件。也就是oc的。我们也可以添加其它的什么.h或.c文件一起编译。然后在.h中声明一个简单的函数,在.m中实现。.h代码如下:
#import
@interface Transport : NSObject
+(void)printString;
@end
.m文件
#import "Transport.h"
@implementation Transport
+(void)printString {
NSLog(@"Hello!");
}
@end
然后在Build Phases左边的+号点下面选项

然后把你要添加的头文件选上,如下图:

然后最后一步,如果你要在模拟器上测试,你要把设备改成模拟器,如果是真机的话需要调成真机。不然会报错的哦。生成的目录,

debug有2个,第一个是iphoneos,也就是真机嘛。第二个就是模拟器喽。
如果你只想一个库能在模拟器和真机上使用,可以把模拟器的静态库和真机的静态库合并,合并方法可以用lipo -create命令完成。这个很简单
lipo -create /模拟器库的路径/lib.a /真机库的路径/lib.a -output /合并后路径/lib.a
好了,我们在其它工程调用。直接把.h文件和.a文件直接拖放到目标工程,注意要勾选copy那项。然后目标工程的库里面自动会添加,如果没有添加你可以手动添加。
![$TF16]IHB8K79%5$LPH(}73](upload/attach/wp/2016/03/TF16IH_20160311150552.jpg)
在代码中调用之前还是在桥接,桥接自行搜索,非常简单。看这篇文章:
Swift开发之数据库SQLite实例详解 在桥接头文件添加头文件.
#import "Transport.h"
添加完成之后就可以在Swift代码中调用了。方法如下:
Transport.printString()
本文链接:https://it72.com/7956.htm