Object-C作为Apple的iOS App开发语言服务了很多个年头,2014年Apple推出了新的编程语言Swift。更高效更安全的口号再次吸引了一大批非iOS开发程序猿进入,小编觉得Swift代替Object-C仅仅是时间问题,在神州这片土地上,毕竟技术普及有些落后。但再有两年左右时间Swift产品链将形成。第三方支持框架逐步完好。Swift必将成为iOS开发主流。眼下来看,激进派的现状Swift与Object-C混合开发。

Object-C中调用Swift

以下就给大家分享下Object-C项目下怎样使用Swift编程。

  1. 首先创建一个Object-Cproject

  2. 右击项目名称。在弹出的快捷菜单上点击“New File…”菜单项。例如以下图所看到的。在新建文件对话框中选择点击“Cocoa Touch Class”列表项。然后点击“Next”button,进入下一步


3. 输入新建类的类名,选择须要的父类类型。切换编程语言为Swift,然后点击“Next”,最后会出现例如以下图所看到的的对话框,主要提示是否自己主动生成隐藏的桥街头文件。显然这里须要创建,点击Create Bridging Header ,这样一个Object-C中就创建了一个Swift类

在Swift中写一个方法測试一下:

    func SayHi()
{
print("Hello,Welcome to call me!")
}

4.在Object-C中调用时须要注意。在类中须要引入隐藏式维护头文件

 #import “项目名称-swift.h”

详细到我们这里就是为:

 #import “BlendSO-swift.h”

5.最后就能够放心地调用Swift类了

SwiftClass *swift=[[SwiftClass alloc]init];[swift SayHi];

那Swift项目中怎么调用Object-C呢?事实上跟上边比較相似

Swift中调用Object-C

  1. 首先创建一个Swiftproject

  2. 右击项目名称,在弹出的快捷菜单上点击“New File…”菜单项,例如以下图所看到的。在新建文件对话框中选择点击“Cocoa Touch Class”列表项。然后点击“Next”button。进入下一步

    3.输入新建类的类名。选择须要的父类类型,切换编程语言为Objective-C,然后点击“Next”,最后会出现例如以下图所看到的的对话框,主要提示是否自己主动生成显式的桥街头文件,显然这里须要创建,点击Create Bridging Header ,这样一个Swift中就创建了一个Objective类

    在新建的Objective-C中測试一下:

         ObjectiveCClase.h中@interface ObjectiveCClase : NSObject
    @property(nonatomic,copy)NSString *name;
    -(id)initWithName:(NSString *)name;
    -(void)SayHi:(NSString *)name;
    @endObjectiveCClase.m中-(id)initWithName:(NSString *)name
    {self=[super init];self.name=name;return self;
    }
    -(void)SayHi:(NSString *)name
    {NSLog(@"%@说:Swift,欢迎你调用我!",name);
    }
    

    4.这里跟上面不同的是须要在显式桥接头文件里增加Objective-C中的类的头文件名称,而Objective-C中不用(也没法调呀,由于是隐式的)

5.最后在Swift中调用Objective-C的类实现OC中的功能

    let objective=ObjectiveCClase(name: "Objective-C")objective.SayHi("Objective-C")

总结一下:

  1. Swift与Objective-C的互调在前期创建步骤基本同样

  2. 中期都会提示生成一个桥接文件,都是第一次的时候会提示,再创建就不会再次提示,但两者是有差别的:Objective-C中调用Swift时生成的是隐式的,而Swift调用Objective-C时是显式的桥接文件

  3. 最后在Objective中调用Swift时须要在所在类上边加上格式为#import “项目名称-swift.h”的头文件,而而Swift调用Objective-C时却是在显式的桥接文件里引入Objective-C的头文件

Object-C与Swift混合开发相关推荐

  1. Flutter嵌入swift混合开发

    前奏: 目前基于flutter的活跃程度,有很多的开发人员开始学习flutter,我也是其中的一枚小卒.由于本公司项目涉及一些小游戏的开发,两端或者是三端(包括web)开发起来可能比较耗费人力物力,并 ...

  2. swift项目嵌入flutter的module混合开发(官方推荐模式)

    上一篇有讲到项目混合开发配置问题. 上一篇是跟网上的各大网游搜罗的混合过程中的问题.这篇根据官方的介绍做了尝试配置比较简单.这里可以分享一下使用: 首先也是一样,在我们的项目MyApp的根目录同级文件 ...

  3. swift项目嵌入flutter的module混合开发(framework模式:适合多人协作开发,一个负责混合开发)

    和之前一样,这个模块也是对于本地我们开发好的代码,需要到一起开发iOS的同事需要拉代码,调试的时候.这种静态包的方式就会好很多.不用在他的电脑上也搭建flutter环境,以及创建flutter项目的拉 ...

  4. Android Swift iOS开发:语言与框架对比

    转载自:http://www.infoq.com/cn/articles/from-android-to-swift-ios?utm_campaign=rightbar_v2&utm_sour ...

  5. 【Flutter】Flutter 混合开发 ( Flutter 与 Native 通信 | 完整代码示例 )

    文章目录 前言 一.Android 端完整代码示例 二.Flutter 端完整代码示例 三.相关资源 前言 前置博客 : [Flutter]Flutter 混合开发 ( Flutter 与 Nativ ...

  6. 【Flutter】Flutter 混合开发 ( Flutter 与 Native 通信 | Android 端实现 MethodChannel 通信 )

    文章目录 前言 一.Android 端 MethodChannel 构造函数 二.Android 端 setMethodCallHandler 方法 三.Android 端实现 MethodChann ...

  7. 【Flutter】Flutter 混合开发 ( Flutter 与 Native 通信 | Android 端实现 EventChannel 通信 )

    文章目录 前言 一.Android 端 EventChannel 构造函数 二.Android 端 setStreamHandler 方法 三.Android 端实现 EventChannel 通信步 ...

  8. 【Flutter】Flutter 混合开发 ( Flutter 与 Native 通信 | Android 端实现 BasicMessageChannel 通信 )

    文章目录 前言 一.Android 端 BasicMessageChannel 构造函数 二.Android 端 MessageCodec 子类实现 三.Android 端 setMessageHan ...

  9. 【错误记录】Flutter 混合开发获取 BinaryMessenger 报错 ( FlutterActivityAndFragmentDelegate.getFlutterEngine() )

    文章目录 一. 报错信息 二. 解决方案 一. 报错信息 在 Flutter 混合开发中 , 开发 Android 与 Flutter 信息交互功能 ; 创建 BasicMessageChannel ...

最新文章

  1. ASP绕过防注入的新思路
  2. java上传+限制单文件,VereMVC 之 单文件上传
  3. TIMESTAMP和DATETIME哪个好
  4. 如何在.NET Core控制台程序中使用依赖注入
  5. 自己动手焊制硬件开发板
  6. 惹恼程序员的10件事
  7. 错误率_全新的支付方式来了 错误率可控制在百万分之一
  8. AsteriskNow 实用总结
  9. 刘徽与《九章算术》《海岛算经》简介
  10. Firefox选择哪个IE TAB
  11. 计算机excel宏代码怎么写,教你如何使用Excel VBA VBA新手必看
  12. 安全运营和应急响应详解
  13. Hutool你值得拥有,吃相不要太难看
  14. 设置及清除Excel打开密码的两种方法
  15. b站视频-尚硅谷jQuery教程张晓飞老师-笔记(二)
  16. 中央台“互联网时代”纪录片分集要点
  17. Django框架学习——4—(DTL模板标签、模版常用过滤器、模版结构优化、加载静态文件)
  18. 使用MapWinGis ActiveX控件在图层上画点
  19. 【数学解析几何】C_几种常见的函数曲线——(典型曲线图)
  20. 中秋节活动征集!!!

热门文章

  1. 基于Javaweb实现超市管理系统
  2. hdfs.DFSClient: Exception in createBlockOutputStream
  3. 通过代码动态创建Windows服务
  4. 【GDOI2016模拟3.16】幂(容斥 + 模型复杂转化)
  5. CXF 调用 .net webservice
  6. codevs1163访问艺术馆(树形dp)
  7. 【RAC】 RAC For W2K8R2 安装--共享磁盘的配置(三)
  8. 第一次创业失败的总结 - 产品设计
  9. .NET 开发环境中使用VSN版本控制
  10. Arcgis10.2安装与解决 [转载自麻辣GIS]