前两天刚写过Swift调用OC,今天在原来的基础上,实现OC调用Swift。

首先,创建一个OneSwiftFile.swift文件,创建一个继承于NSObject的类(这个地方你可以自己选择继承的父类)

然后在类中创建几个方法,方便在OC文件中使用

class OneSwiftFile:NSObject{
    override init() {
        NSLog("这是在init方法中。。。");
    }
    
    //创建一个方法
    func someFunc() {
        NSLog("这是在someFunc()方法中.......");
    }
    
    //创建一个带有参数和返回值得方法
    func someArrayByValue(v1:String,v2:String) -> NSArray {
        return [v1,v2];
    }
    //创建一个带有标签的方法
    func someArrayValue(v1:String,withValue v2:String,withValue v3:String) -> NSArray {
        return [v1,v2,v3];
    }

//这里说一下,带标签和不带标签的区别://创建一个带有标签的方法,如果带有标签,就会以标签形式显示,如果没有标签,就会以参数名为标签,可以比较下面的方法:
    /*
     - (NSArray * _Nonnull)someArrayByValue:(NSString * _Nonnull)v1 v2:(NSString * _Nonnull)v2;
     - (NSArray * _Nonnull)someArrayValue:(NSString * _Nonnull)v1 withValue:(NSString * _Nonnull)v2 withValue:(NSString * _Nonnull)v3;
     */

}

这里要强调一点,当你写完方法后,编译一下,就会在#import <项目名称-Swift.h>的头文件(这个头文件下面会说明)最下方生成对应的方法,这样可以出现提示,方便方法调用

这时候,Swift文件完成以后,我们开始考虑如何使用类中的方法,首先在创建的OC文件(BgImgView.h.m)中导入头文件,头文件的格式是:#import <项目名称-Swift.h>,如:#import <SwiftAndOCChangeDemo-Swift.h>

解释一下,这个头文件在文件列表中是找不到的,但是可以点进去查看,文件的最下面就是系统自动将所有的Swift语言的文件都进行了一个OC语言的编译,同时包括Swift文件中的方法生成,这进一步说明了,Swift想要取代OC,但又不能完全去除OC,因为这是基础,最底层是C语言

如图:

然后在OC文件中创建对象,调用方法

//调用一下OneSwiftFile.swift文件中的方法
    OneSwiftFile *oneS = [[OneSwiftFile alloc]init];
    //someFunc方法
    [oneS someFunc];
    
    //带参数和返回值的方法
    NSArray *arr = [oneS someArrayByValue:@"好好学习" v2:@"天天向上"];
    for (NSString *str in arr)
    {
        NSLog(@"输出每一个字符串...%@",str);
    }
    //带有标签的方法
    arr = [oneS someArrayValue:@"哈哈" withValue:@"呵呵" withValue:@"嘿嘿"];
    for (NSString *str in arr)
    {
        NSLog(@"输出每一个字符串...%@",str);
    }

结果展示:


源码下载:http://download.csdn.net/detail/hbblzjy/9610203


Swift基础之OC文件调用Swift代码(在上次的基础上写的)的更多相关文章

  1. OC工程调用Swift方法

    1.建一个OC工程命名为SwiftOC.如图所示: 2.新建一个swfit文件命名为Test.swift,会弹出提示,选择Create Bridging Header建立桥接文件,系统会建立“工程名- ...

  2. 在 OC 中调用 Swift 代码

    1.在 Objective-C 项目中使用 Swift 代码 1)在 OC 项目中创建 .Swift 文件,文件中的格式为其本有的格式. 2)Xcode 提示是否创建 Objective-C brid ...

  3. Swift: 在Swift中桥接OC文件(自己创建的类文件、第三方库文件)

    一.介绍 随着Swift的逐渐成熟,使用swift开发或者混合开发已经成为了一个趋势,本身苹果公司也十分推荐使用Swift这门新语言.目前Swift已经更新到了3.0,估计没有多久4.0就要出来了.那 ...

  4. 在OC中调用Swift类中定义delegate出现:Property 'delegate' not found on object of type ...

    找了许久没找到答案, 在下面的链接中, 我解决了这个问题: http://stackoverflow.com/questions/26366082/cannot-access-property-of- ...

  5. python基础1 - 多文件项目和代码规范

    1. 多文件项目演练 开发 项目 就是开发一个 专门解决一个复杂业务功能的软件 通常每 一个项目 就具有一个 独立专属的目录,用于保存 所有和项目相关的文件 –  一个项目通常会包含 很多源文件 在 ...

  6. OC调用Swift 整理步骤!总结别人的!方便自己查找!

    1. 2. 上面的修改了一个配置项,有一个Product Module Name在后面会使用. 在工程里面点击File/New/File…,选择iOS/Source/Cocoa Touch Class ...

  7. iOS oc 调用 swift

    如股票oc要调用swift里面的代码 需要包含固定这个头文件 项目名称 LiqunSwiftDemo-Swift.h #ProjectName#-Swift.h 固定的写法 swift 目的 是取代o ...

  8. [Swift]在Swift项目中创建桥接头文件,Swift文件和Objective-C文件相互调用

    创建一个Swift项目[demo],以下内容Swift文件和Objective-C文件相互调用都是在Swift项目中. 一.Swift文件调用Objective-C文件 新建文件夹[SupportFi ...

  9. 在Objc项目中调用Swift

    之前的文字中记录了在Swift项目中调用OC的相关代码,比较简单直接 传送门 但是在OC中调用swift代码则不是那么的和谐,网络上很多文章业已经有点陈旧.记录步骤如下: 1.创建OC项目 (1)启动 ...

随机推荐

  1. Miox带你走进动态路由的世界——51信用卡前端团队

    写在前面: 有的时候再做大型项目的时候,确实会被复杂的路由逻辑所烦恼,会经常遇到权限问题,路由跳转回退逻辑问题.这几天在网上看到了51信用卡团队开源了一个Miox,可以有效的解决这些痛点,于是乎我就做 ...

  2. VMWare - Ubuntu 64 (16.04)之扩容介绍

    背景 貌似是一个老生常谈的问题哈,由于自己之前也没有弄过,今天正好有时间稍微折腾了一下. 这里就选择最简单的方式来为大家呈现. VMWare 的设置 没有什么可以过多说的,完全是图形操作.这里直接上图 ...

  3. Servlet技术 Cookie与Session

    会话过程:用户打开浏览器,点击链接访问资源,最后到关闭浏览器的整个过程称之为会话. 会话使用:与服务器进行会话的过程中产生数据,数据被保存下来,服务器根据数据对客户进行辨别,做出个性化的响应. 介绍两 ...

  4. 算法导轮之B树的学习

    最近学习了算法导轮里B树相关的知识,在此写一篇博客作为总结. 1.引言 B树是为磁盘或其他直接存取的辅助存储设备而设计的一种平衡搜索树.B树类似于红黑树,但它与红黑树最大不同之处在于B树的节点可以拥有 ...

  5. 利用mybatis-generator自动生成数据持久化的代码

    MyBatis生成器简介 MyBatis Generator(MBG)是MyBatis MyBatis 和iBATIS的代码生成器.它将生成所有版本的MyBatis的代码,以及版本2.2.0之后的iB ...

  6. 关于mysql安装到最后一步老是停留在starting server,显示无响应

    从昨天晚上到今天安装MySQL花了好长的时间,一直是在后面starting server 这部就显示无响应,查资料了解到是MySQL有残留,有些注册表文件需要手动清理,下面是具体方法. 1.先用卸载软 ...

  7. LintCode题解之判断是否为平方数之和

    简单粗暴 public class Solution { /* * @param : the given number * @return: whether whether there're two ...

  8. Docker 容器格式

    最初,Docker 采用了 LXC 中的容器格式.自 1.20 版本开始,Docker 也开始支持新的 libcontainer 格式,并作为默认选项. 对更多容器格式的支持,还在进一步的发展中.

  9. 衣带渐宽终不悔,为伊消得人憔悴--DbHelper增强版

    核心理念 如何使用 测试实例 数据库内详细数据信息 测试代码 数据库连接池测试 测试集 延伸 相关下载链接 前几日,写了一篇关于一个 轻量级数据持久化的框架的博客(点击浏览: http://blog. ...

  10. linux TCP数据包封装在SKB的过程分析

    在linux中 tcp的数据包的封装是在函数tcp_sendmsg开始的,在函数tcp_sendmsg中用到skb = sk_stream_alloc_skb(sk, select_size(sk, ...