作家
登录

优雅的开发Swift和Objective-C混编的Framework

作者: 来源: 2017-04-08 18:05:27 阅读 我要评论

在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

  1. #import <span class="hljs-title"><Foundation/Foundation.h></span> 
  2.  
  3.   
  4.  
  5. @interface OCSource : NSObject 
  6.  
  7. - (void)functionFromOC; 
  8.  
  9. @end  

OCSource.m

  1. #import "OCSource.h" 
  2.  
  3.   
  4.  
  5. @implementation OCSource 
  6.  
  7.   
  8.  
  9. - (void)functionFromOC{ 
  10.  
  11.     NSLog(@"%@",@"Log from objective c in framework"); 
  12.  
  13.  
  14. @end  

Swift调用OC

新建SwiftSource.swift

  1. open class SwiftIt{ 
  2.  
  3.     public init(){} 
  4.  
  5.     let ocObject = OCSource() 
  6.  
  7.     public func encapsulate(){ 
  8.  
  9.         ocObject.functionFromOC() 
  10.  
  11.     } 
  12.  
  13.  

然后,按照文档中,为了让Swift文件拜访Objective C文件,我们应当在umbrella header,也就是MixFramework.h中,裸露所须要的header。

也就是,MixFramework.h,

  1. #import <MixFramework/OCSource.h> 

然后,自负满满的点击build。

Boom~~~,编译不经由过程。

原因:OCSource.h默认编译的时刻是Project权限. 为了在umbrella header中应用,要把这个文件的权限改成Public

按照图中的方法拖以前即可。

嗯,如今build,可以看到build成功了。

OC调用Swift

  1. open class ClassForOC:NSObject{ 
  2.  
  3.     public static let textForOC = "textForOC" 
  4.  
  5.  

  推荐阅读

  7个故事告诉你 当人工智能遇上医生会发生什么

2016年11月的一个晚上,美国纽约布朗克斯区(Bronx)的一名54岁女子因为严重头痛被送至哥伦比亚大年夜学(Columbia University)医疗中间的急诊室。她对急诊室大夫说本身目力变得模糊,左手认>>>详细阅读


本文标题:优雅的开发Swift和Objective-C混编的Framework

地址:http://www.17bianji.com/lsqh/34658.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)