Swift语言中,有很多封装类并没有,如果需要使用到,就需要桥接OC语言中的类,这时候就需要使用桥接头文件,一下是使用的步骤:

创建一个Swift项目Demo,然后新建一个OC语言的文件

如图:

创建一个BgImgView的类,选择对应的Object-C语言,点击Next按钮

会弹出提示框,询问是否需要配置一个桥接头文件,点击创建按钮(第三个)

这个时候会自动生成一个桥接头文件

现在开始在OC文件中添加需要使用的相关代码

.h文件

{
    id _targetT;
    SEL _selT;
}

//不带参数的行数
-(void)testT;
//待返回参数
-(NSString *)nameStr;
//添加一个点击事件方法,模仿按钮的点击
-(void)addTarget:(id)targetTT withSelector:(SEL)selecTT;

.m文件

//不带参数的行数
-(void)testT
{
    NSLog(@"调用了testT方法。。。。");
}
//待返回参数
-(NSString *)nameStr
{
    return @"好好学习,天天向上";
}
//添加一个点击事件方法,模仿按钮的点击
-(void)addTarget:(id)targetTT withSelector:(SEL)selecTT
{
    _targetT = targetTT;
    _selT = selecTT;
    
    //是否交互
    self.userInteractionEnabled = YES;
}
-(void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    if (_targetT)
    {
        [_targetT performSelector:_selT withObject:self];
    }
}

需要的代码写完后,需要在桥接文件中添加头文件,这里只写需要使用到的OC头文件即可,不需要把所有的OC文件都写上

然后在 .Swift 文件中使用,

//创建一个BgImgView对象
        let bgImgV = BgImgView.init(frame:CGRectMake(10, 100, 200, 100));
        bgImgV.image = UIImage.init(named: "22.jpg");
        
        //调用方法
        bgImgV.testT();
        
        //返回参数方法
        let nameStr = bgImgV.nameStr();
        NSLog("输出了。。。%@", nameStr);
        
        //添加点击事件
        bgImgV.addTarget(self, withSelector: #selector(ViewController.imgClick));
        
        self.view.addSubview(bgImgV);
        
    }
    
    func imgClick(imgV:BgImgView){
        NSLog("点击了图片。。。。。");
    }

最后输出效果:

Swift基础之Swift调用OC语言文件使用步骤的更多相关文章

  1. swift调用oc语言文件,第三方库文件或者自己创建的oc文件——简书作者

    Swift是怎样调用OC的第三方库的呢?请看下面详情: 情况一: 1.首先打开Xcode,iOS->Application->Single View Application, 选Next. ...

  2. 一.OC基础之:1,OC语言的前世今生 ,2,OC语言入门,3,OC语言与C的差异,4,面向对象,5,类和对象的抽象关系,6,类的代码创建,7,类的成员组成及访问

    1,OC语言的前世今生 , 一, 在20世纪80年代早期,布莱德.麦克(Brad Cox)设计了OC语言,它在C语言的基础上增加了一层,这意味着对C进行了扩展,从而创造出一门新的程序设计语言,支持对象 ...

  3. Swift和Objective-C混合编程——Swift调用OC

    在iOS应用的开发中.Swift必将代替OC,两者的趋势是"短期共存,长期代替".但曾经有太多的代码是用OC语言完毕的,而Swift的开发也从 OC中继承了非常多的特性.两者也是有 ...

  4. 在swift调用OC的第三方库

    https://www.jianshu.com/p/4799ac1d7dce 2017.06.02 23:55* 字数 275 阅读 1619评论 0喜欢 3 环境:xcode 8.3.2 系统: M ...

  5. 零基础使用Swift学习数据科学

    概述 Swift正迅速成为数据科学中最强大.最有效的语言之一 Swift与Python非常相似,所以你会发现2种语言的转换非常平滑 我们将介绍Swift的基础知识,并学习如何使用该语言构建你的第一个数 ...

  6. Swift基础之OC文件调用Swift代码(在上次的基础上写的)

    前两天刚写过Swift调用OC,今天在原来的基础上,实现OC调用Swift. 首先,创建一个OneSwiftFile.swift文件,创建一个继承于NSObject的类(这个地方你可以自己选择继承的父 ...

  7. iOS开发之OC与swift开发混编教程,代理的相互调用,block的实现。OC调用Swift中的代理, OC调用Swift中的Block 闭包

    本文章将从两个方向分别介绍 OC 与 swift 混编 1. 第一个方向从 swift工程 中引入 oc类 1. 1 如何在swift的类中使用oc类    1.2  如何在swift中实现oc的代理 ...

  8. 在 Swift 中调用 OC 代码

    前言 在 Swift 语言中,我们可以使用 Objective-C.C 语言编写代码,我们可以导入任意用 Objective-C 写的 Cocoa 平台框架.Objective-C 框架或 C 类库. ...

  9. Swift调用OC和C

    Swift文件:main.swift import Foundation //Swift调用C函数 desc1() //Swift调用OC //拿到OC类 var funcClass = Root() ...

随机推荐

  1. Python中list的功能介绍

    List的功能介绍 1. 列表的两种方法 1. 列表的内置方法 列表的相加 格式:x.__add__(y)等同于x+y 例如:list1 = [1,2,3] print(list1.__add__([ ...

  2. David MacKay:用信息论解释 '快速排序'、'堆排序' 本质与差异

    这篇文章是David MacKay利用信息论,来对快排.堆排的本质差异导致的性能差异进行的比较. 信息论是非常强大的,它并不只是一个用来分析理论最优决策的工具. 从信息论的角度来分析算法效率是一件很有 ...

  3. ubuntu14.04拼音输入法问题的解决方法

    14.04的自带的拼音输入法,打字的时候你会发现有很大的问题,打不出来一个完整的字. 解决方法: ibus-daemon -drx   //重启ibus进程 在终端里输一次这个命令就ok了. 或者装个 ...

  4. python打造一个分析网站SQL注入的脚本

    前言: 昨天晚上其实就已经写完代码.只不过向FB投稿了,打算延迟一晚上在写博客 所有才到今天早上写.好了,接下来进入正题. 思路: 1.从网站源码中爬取那些类适于:http://xxx.com/xx. ...

  5. 小知识点 取消button动作 和取巧按钮高亮

      如果让按钮在点击时不变暗 进行下面设置:   如果使butten失去动画效果进行下面设置:(一般用于图片+文字,效果等于可以加图片班的label,当然label不能加图片)

  6. 用js来实现那些数据结构13(树01-二叉搜索树的实现)

    前一篇文章我们学会了第一个非顺序数据结构hashMap,那么这一篇我们来学学树,包括树的概念和一些相关的术语以及二叉搜索树的实现.唉?为什么不是树的实现,不是二叉树的实现.偏偏是二叉搜索树的实现?嗯, ...

  7. Java语言程序设计-Markdown格式作业模板

    Markdown格式作业模板如下,大家可以直接复制粘贴使用. 注意:作业中不能只写答案,题目本身也要出现.. # 1. 本章学习总结 你对于本章知识的学习总结 # 2. 书面作业 **Q1 java ...

  8. springMVC源码分析--RequestParamMethodArgumentResolver参数解析器(三)

    之前两篇博客springMVC源码分析--HandlerMethodArgumentResolver参数解析器(一)和springMVC源码解析--HandlerMethodArgumentResol ...

  9. ThreadLocal(线程绑定)

    为保证在DAO层里的操作都在同一事务里,我们曾使用以参数的形式将Connection向下传递的方式,而ThreadLocal来创建Connection连接,避免了一直以参数的形式将Connection ...

  10. java.lang.ClassNotFoundException:org.springframework.web.context.ContextLoaderListener问题解决

    今天搭建SSH项目的时候出现了如下错误: 严重: Error configuring application listener of class org.springframework.web.con ...