前言
为什么要写这样一篇文章,因为昨天和一个朋友讨论到Swift和Objective C如何混合开发Framework,中途发现了很多有意思的坑。
用Swift封装OC的库是一件比较常见的事情,毕竟对于大多数公司来说,老的代码都是用OC写的,而且经过多次迭代,这些OC的代码已经被验证了是稳定的,用Swift重写代价太大。这就引入了一个需求:
- 用Swift和OC来混编一个Framework。
如果你之前没有用Swift和Objective C混合开发,建议看看这篇文档:
这篇文档很详细的讲解了如何运用Objective C和Swift进行混合开发App和Framework。于是,我们先按照文档来写一个混编的Framework
按照文档一步一步来
新建一个基于单页面工程,然后新建一个一个Target,选中Cocoa Touch Framework。然后,分别新建一个Swift文件和Objective C类,注意Target Member Ship选中Framework。类的内容如下:
OCSource.h
#import <Foundation/Foundation.h>
@interface OCSource : NSObject
- (void)functionFromOC;
@end
OCSource.m
#import "OCSource.h"
@implementation OCSource
- (void)functionFromOC{
NSLog(@"%@",@"Log from objective c in framework");
}
@end

本文探讨了如何优雅地开发Swift和Objective-C混编的Framework,包括Swift调用OC、OC调用Swift以及外部调用的实现。在过程中遇到的问题是OC源文件的访问权限,通过修改权限和使用modulemap文件,实现了隐藏OC具体接口,保持了Framework的封装性。
最低0.47元/天 解锁文章
7954





