Object-C与Swift混合开发

摘要:
我认为Swift取代Object-C只是时间问题。我将与您分享如何使用Swift在Object-C下编程。5.最后,您可以安全地调用Swift类SwiftClass*Swift=[[SwiftClassalloc]init]“如何在Swift项目中调用Object-C;

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;
    @end
    
         ObjectiveCClase.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混合开发》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇使用Jacoco获取 Java 程序的代码执行覆盖率内存映射大文件下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Qt 自定义事件详细实例(继承QEvent,然后QCoreApplication::postEvent()、sendEvent())

创建用户事件 创建一个自定义类型的事件,首先需要有一个事件号,其值通常大于QEvent::User。为了传递事件信息,因此必须编写自定义的事件类,该事件类从QEvent继承。     编写用户事件:编写用户事件类的方法是首先定义一个事件号。然后实现用户事件类,应用程序将把用户事件类于Qt的事件类同等处理。 //用户事件类QOriCodeEvent头文件...

用javaweb写一个注册界面,并将数据保存到后台数据库(全部完成)(课堂测试)

一、题目:WEB界面链接数据库 1.考试要求:       1登录账号:要求由6到12位字母、数字、下划线组成,只有字母可以开头;(1分) 2登录密码:要求显示“• ”或“*”表示输入位数,密码要求八位以上字母、数字组成。(1分) 3性别:要求用单选框或下拉框实现,选项只有“男”或“女”;(1分) 4学号:要求八位数字组成,前四位为“2018”开头,输入自...

ORACLE EXP/IMP 参数详解《转》

exp nc50/1 inctype=complete file=E:\data.dmp full=y(导出全部) exp nc50/1 file=E:\data.dmp OWNER = nc50(导出指定用户nc50) imp nc50/1@orcl inctype=complete file=E:\data.dmp full=Y(导入全部) imp n...

mysql8.0 初始化数据库及表名大小写问题

删除DATA文件夹 rm -rf /var/lib/mysql 重新初始化并启动MYSQL mysqld --initialize --console --lower-case-table-names=1 chown -R mysql:mysql /var/lib/mysql/ systemctl start mysqld systemctl status...

使用webpack搭建vue开发环境

最近几天项目上使用了vue.js作为一个主要的开发框架,并且为了发布的方便搭配了webpack一起使用。CSS框架使用的是vue-strap(vue 对bootstrap控件做了封装)这篇文章主要总结一下具体搭建的过程,和途中遇到的一些问题的解决办法 主要用到的工具 Vue webpack vue-strap vue-router 搭建步骤 1. 首先...

【转载】 tensorflow gfile文件操作详解

 原文地址: https://zhuanlan.zhihu.com/p/31536538 ------------------------------------------------------------------------------- 一、gfile模块是什么 gfile模块定义在tensorflow/python/platform/gfil...