swift framework使用OC 代码两种方式示例
目录
- 引言
- 第一种:
- 第二种:
- 1. 新建一个module.modulemap文件:
- 2.设置module.modulemap引用路径
- 3.import module
引言
swift 在工程中可以通过桥接文件使用OC代码,但是在framework中是不支持使用桥接文件的,下面是是swift framework 使用 OC 代码的两种方式。
第一种:
在target->Build Phases->Headers中,将引入的oc文件由project移动到public中,再在公共.h文件中引入即可使用。
第二种:
第一种方法的swiftframework会暴露oc的头文件,如果你的Objective-C文件和接口并不想暴露可以采用modulemap。
1. 新建一个module.modulemap文件:
创建一个.h文件修改名字和后缀即可。
module WFAVEngineKit { header "./Pods/GOWFAVEngineKit/GOWFAVEngineKit/Frameworks/WFAVEngineKit.framework/Headers/WFAVEngineKit.h" export * }
注意:这里的路径是要使用的OC代码相对于modulemap文件的路径
(../上一级目录,./当前目录,/根目录)
2.设置module.modulemap引用路径
在build settings中搜索import paths,输入找到module.modulemap 的文件路径。
我的这个module.modulemap文件是在根路径下,直接输入即可。
3.import module
swift在需要调用OC代码的地方直接import module名字
以上就是swift framework使用OC 代码两种方式示例的详细内容,更多关于swift framework使用OC代码的资料请关注我们其它相关文章!
相关推荐
-
Swift中的协议(protocol)学习教程
一.引言 协议约定了一些属性与方法,其作用类似Java中的抽象类,Swift中类型通过遵守协议来实现一些约定的属性和方法.Swift中的协议使用protocol关键字来声明.Swift中的协议还有一个十分有意思的特性,协议可以通过扩展来实现一些方法和附加功能. 二.在协议中定义属性和方法 协议中定义的属性只约定名称和类型,在具体类型的实现中,其可以是存储属性也可以是计算属性,协议中还需要指定属性是可读的还是可读可写的.示例代码如下: protocol MyPortocol { //定义实例属性
-
Swift使用transform 实现重复平移动画效果
摘要 要实现一组重复的动画,本质上就是找到动画开始点.结束点.在动画结束的时候,触发开始点,持续这样的动作. 这里面要梳理的逻辑就是1.触发开始点和2.监听动画结束点.这两个逻辑是实现重复动画的基础. 应用场景 将 imageView 等 UI 控件,设置成平移的动画,并且一直动画中. transform 可以实现控件的平移,但是无法连续动画. API 及语言 核心逻辑/代码 transform 可以将控件平移,为了达到连续动画,可使用递归方式实现. 动画实现 设置动画并开始 使用 UIView
-
swift表格控件使用方法详解(UITableview)
本文实例为大家分享了swift表格控件的简单使用,供大家参考,具体内容如下 1.效果图 2.该控件(UITableView) 代码注意的地方: A.ViewController 不单单继承于 UIViewController,还有 UITableViewDelegate,UITableViewDataSource. B.要自己重新实现UITableView的3个方法.分别是:numberOfSectionInTableView(table:UITableView), tableView(tabl
-
WKWebview非全屏自动播放h5视频的实现方法(Swift、OC)
前言 WKWebview加载一个视频播放的h5页面时,默认是需要用户点击一下才能播放视频,且视频播放时会全屏播放.如果想要h5页面视频非全屏自动播放该怎么做呢? Swift实现 这个时候就需要设置WKWebview的configuration参数,我们先来看一下Swift的实现,代码如下: let configuration = WKWebViewConfiguration() configuration.allowsInlineMediaPlayback = true if #availabl
-
swift闭包和OC block类型的使用
之前看过一段swift,一直不知道OC中的block,即swift中的闭包是怎么实现的.今天就在网上搜索了一下,同时对比了一下OC中block类型的实现方法,然后写了一个Demo测试一下. 使用说明: swift版本 1.声明类型 typealias hideShowView = (Int) -> Void 2.声明属性 var muFunc:hideShowView? 3.传递参数 func didSelectedToHideView(hideFunc:@escaping (Int)->Vo
-
简陋的swift carthage copy-frameworks 辅助脚本代码
在看 carthage 时,其中需要配置一个 copy-frameworks 脚本,此脚本特殊的地方,需要手动填写 Input Files 和 Output Files.一个一个填写,很糟心~ 观察了下,对应修改的是 xxx.xcodeproj/project.pbxproj 中这个文本文件的特定位置的字段,类似于: /* Begin PBXShellScriptBuildPhase section */ 750D68EC2000817C006235CD /* ShellScript */ =
-
swift framework使用OC 代码两种方式示例
目录 引言 第一种: 第二种: 1. 新建一个module.modulemap文件: 2.设置module.modulemap引用路径 3.import module 引言 swift 在工程中可以通过桥接文件使用OC代码,但是在framework中是不支持使用桥接文件的,下面是是swift framework 使用 OC 代码的两种方式. 第一种: 在target->Build Phases->Headers中,将引入的oc文件由project移动到public中,再在公共.h文件中引入即可
-
微信小程序路由跳转两种方式示例解析
目录 官方文档 路由跳转的两种形式 标签形式 js形式 快速总结 小程序路由跳转 1.1 wx.switchTab(Object object) 1.2 wx.reLaunch(Object object) 1.3 wx.redirectTo(Object object) 1.4 wx.navigateTo(Object object) 1.5 wx.redirectTo与wx.navigateTo的区别 1.6 wx.navigateBack(Object object) 官方文档 https
-
android绘制圆形图片的两种方式示例
android绘制圆形图片的两种方式 看下效果先 下面有完整的示例代码 使用BitmapShader(着色器) 我们在绘制view 的时候 就是小学上美术课 用水彩笔在本子上画画 使用着色器绘制圆形图片最简单的理解方式 就是把bitmap当做一种颜色 设置给paint ,paint都已经有颜色了 你想让它方了,圆了,扁了 还不是看你心情 canvas调用那个方法咯 实现的大致思路如下: 1. 创建一个类 继承imageView 重写onDraw() 2. 获取到bitmap图片 3. 计算图片的
-
Python 多线程,threading模块,创建子线程的两种方式示例
本文实例讲述了Python 多线程,threading模块,创建子线程的两种方式.分享给大家供大家参考,具体如下: GIL(全局解释器锁)是C语言版本的Python解释器中专有的,GIL的存在让多线程的效率变低(哪个线程抢到锁,就执行哪个线程).在IO密集型程序中,多线程依然比单线程效率高(GIL通过IO阻塞自动切换多线程). 解决GIL(全局解释器锁)的问题的三种方法: 1.不要用C语言版本的Python解释器. 2.让子线程运行其他语言代码(例如:主线程运行Python代码,子线程运行C语言
-
Vue路由切换的两种方式示例详解
目录 Vue路由切换的两种方式 1. 标签切换 1.1 <a>标签切换 1.2 路径切换 1.3 path切换 1.4 name切换(推荐) 2. js切换 Vue路由切换的两种方式 1. 标签切换 1.1 <a>标签切换 语法:<a href=“# + 路由路径”>标签内容</a> 例子: 路由规则为: const router = new VueRouter({ //路由对象数组 routes: [{ path: '/login', component:
-
PHP实现无限极分类的两种方式示例【递归和引用方式】
本文实例讲述了PHP实现无限极分类的两种方式.分享给大家供大家参考,具体如下: 面试的时候被问到无限极分类的设计和实现,比较常见的做法是在建表的时候,增加一个PID字段用来区别自己所属的分类 $array = array( array('id' => 1, 'pid' => 0, 'name' => '河北省'), array('id' => 2, 'pid' => 0, 'name' => '北京市'), array('id' => 3, 'pid' =>
-
t-sql清空表数据的两种方式示例(truncate and delete)
复制代码 代码如下: TRUNCATE TABLE (Transact-SQL) Removes all rows from a table without logging the individual row deletions. TRUNCATE TABLE is similar to the DELETE statement with no WHERE clause; however, TRUNCATE TABLE is faster and uses fewer system and t
-
Hibernate中获取Session的两种方式代码示例
Session:是应用程序与数据库之间的一个会话,是Hibernate运作的中心,持久层操作的基础.对象的生命周期/事务的管理/数据库的存取都与Session息息相关. Session对象是通过SessionFactory构建的,下面举个例子来介绍Hibernate两种获取session的方式. 日志,是编程中很常见的一个关注点.用户在对数据库进行操作的过程需要将这一系列操作记录,以便跟踪数据库的动态.那么一个用户在向数据库插入一条记录的时候,就要向日志文件中记录一条记录,用户的一系列操作都要在
-
.NET实现定时发送邮件代码(两种方式)
有时候我们或许会遇到想在某一个时刻给别人发送一封邮件,就像是在生日的时候,但是我们又怕到时候忘记了,这时就应该 使用发送定时邮件的功能,但是这个定时发送邮件功能是怎么实现的呢?下面用两种方式实现.net定时发送邮件代码,具体请看下面内容. 实现思路.需求添加一个全局应用程序类Global.asax 代码会在访问网站时运行 Global.asax代码: void Application_Start(object sender, EventArgs e) { // 在应用程序启动时运行的代码 Sys
-
Flutter以两种方式实现App主题切换的代码
概述 App主题切换已经成为了一种流行的用户体验,丰富了应用整体UI视觉效果.例如,白天夜间模式切换.实现该功能的思想其实不难,就是将涉及主题的资源文件进行全局替换更新.说到这里,我想你肯定能联想到一种设计模式:观察者模式.多种观察对象(主题资源)来观察当前主题更新的行为(被观察对象),进行主题的更新.今天和大家分享在 Flutter 平台上如何实现主题更换. 效果 实现流程 在 Flutter 项目中,MaterialApp组件为开发者提供了设置主题的api: const MaterialAp
随机推荐
- Javascript获取表单名称(name)的方法
- PowerShell编程中的一些命名规则参考
- IE JS无提示关闭窗口不提示的方法
- Python使用reportlab将目录下所有的文本文件打印成pdf的方法
- js对table的td进行相同内容合并示例详解
- JS实现div居中示例
- Yii使用migrate命令执行sql语句的方法
- ajax中指定innerHTML时如何应用其中的SCRIPT的研究
- jquery ui dialog实现弹窗特效的思路及代码
- jQuery中ready事件用法实例
- 分享27款非常棒的jQuery 表单插件
- js实现Select头像选择实时预览代码
- 深入剖析JavaScript:Object类型
- BootStrap 图标icon符号图标glyphicons不正常显示的快速解决办法
- Android实现支付宝手势密码功能
- 实例解说TCP连接建立及结束过程详解
- Centos7安装和配置Mysql5.7
- Shell脚本用for循环遍历参数的方法技巧
- MySQL中大对象的多版本并发控制详解
- python函数装饰器之带参数的函数和带参数的装饰器用法示例