在SwiftSource.swift中,增长一个类,
媒介
为什么要写如许一篇文┞仿,因为昨天和一个同伙评论辩论到Swift和Objective C若何混淆开辟Framework,半途发清楚明了很多有意思的坑。
用Swift封装OC的库是一件比较常见的工作,毕竟对于大年夜多半公司来说,老的代码都是用OC写的,并且经由多次迭代,这些OC的代码已经被验证了是稳定的,用Swift重写价值太大年夜。这就惹人了一个需求:
- 用Swift和OC来混编一个Framework。
https://developer.apple.com/library/content/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html
按照文档一步一步来
新建一个基于单页面工程,然后新建一个一个Target,选中Cocoa Touch Framework。然后,分别新建一个Swift文件和Objective C类,留意Target Member Ship选中Framework。类的内容如下:
OCSource.h
- #import <span class="hljs-title"><Foundation/Foundation.h></span>
- @interface OCSource : NSObject
- - (void)functionFromOC;
- @end
OCSource.m
- #import "OCSource.h"
- @implementation OCSource
- - (void)functionFromOC{
- NSLog(@"%@",@"Log from objective c in framework");
- }
- @end
Swift调用OC
新建SwiftSource.swift
- open class SwiftIt{
- public init(){}
- let ocObject = OCSource()
- public func encapsulate(){
- ocObject.functionFromOC()
- }
- }
然后,按照文档中,为了让Swift文件拜访Objective C文件,我们应当在umbrella header,也就是MixFramework.h中,裸露所须要的header。
也就是,MixFramework.h,
- #import <MixFramework/OCSource.h>
然后,自负满满的点击build。
Boom~~~,编译不经由过程。
原因:OCSource.h默认编译的时刻是Project权限. 为了在umbrella header中应用,要把这个文件的权限改成Public
按照图中的方法拖以前即可。
嗯,如今build,可以看到build成功了。
OC调用Swift
- open class ClassForOC:NSObject{
- public static let textForOC = "textForOC"
- }
推荐阅读
2016年11月的一个晚上,美国纽约布朗克斯区(Bronx)的一名54岁女子因为严重头痛被送至哥伦比亚大年夜学(Columbia University)医疗中间的急诊室。她对急诊室大夫说本身目力变得模糊,左手认>>>详细阅读
本文标题:优雅的开发Swift和Objective-C混编的Framework
地址:http://www.17bianji.com/lsqh/34658.html
1/2 1