Object-C与Swift混合开发

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-C工程
  2. 右击项目名称,在弹出的快捷菜单上点击“New File…”菜单项,如下图所示,在新建文件对话框中选择点击“Cocoa Touch Class”列表项,然后点击“Next”按钮,进入下一步

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. 首先创建一个Swift工程
  2. 右击项目名称,在弹出的快捷菜单上点击“New File…”菜单项,如下图所示,在新建文件对话框中选择点击“Cocoa Touch Class”列表项,然后点击“Next”按钮,进入下一步

    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的头文件
时间: 2024-12-19 20:43:45

Object-C与Swift混合开发的相关文章

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

转载自:http://www.infoq.com/cn/articles/from-android-to-swift-ios?utm_campaign=rightbar_v2&utm_source=infoq&utm_medium=articles_link&utm_content=link_text 从Android到Swift iOS开发:语言与框架对比 我从2009年开始做Android开发,开始接触Swift是在2014年底,当时组里曾经做过一个Demo App,感觉技术还

浅谈混合开发与Android,JS数据交互

本文是作者原创,如转载请注明出处! 一.概论 现在时代已经走过了移动互联网的超级火爆阶段,市场上移动开发人员已经趋于饱和,显然,只会原生APP的开发已不能满足市场的需求,随着H5的兴起与火爆,H5在原生APP中的使用越来越广泛,也就是我们常说的混合开发(Hybrid APP).最新很火的微信小程序相信大家都是知道的,实际上微信小程序加载的界面就是一个HTML5的界面,HTML5界面在一些电商类的APP中主要承担展示数据的作用,但是他的作用并不仅限于此,最起码js调用原生方法和原生调用js的方法是

android混合开发,webview的java与js互操作

android原生应用,用webview加载应用中的网页,并且java代码与js代码可以互相操作. 这是混合开发的基石,最基本也最重要的东西,实验代码在这里. 概括说说—— java调js:调用webView.load("javascript:someFunction()"); 这样可以调用webView里页面上的全局方法.这不是什么新鲜东西,你在网页中也可以这么做,试试在浏览器地址栏输入javascript:alert("427studio");也可以在浏览器地址

OC与JS混合开发

随着iOS开发的成本增大,越来越多的公司开始使用html5混合开发软件了,因为使用原生的开发花费的成本跟时间都很大,而使用html5来搭建界面会方便很多,效率相对而言也提高了.虽然使用UIWebView实现的交互效果与原生效果相比还是会大打折扣,这类界面通常没有复杂的交互效果,所以现在主流应用大多采用混合开发.花了几天时间,把JS的基础全部看了一遍,又研究了一下巧神的书,写了一个iOS7以前的JS与OC混合开发的demo. 既然是html5页面搭建的布局,那么肯定是得有html5页面的,所以首先

第一个Swift应用开发和通过appstore审核的曲折经历

昨天,缘创派的新版本app终于审核通过.这个版本是用swift开发的一个版本,几乎是在appstore允许提交swift程序的第一天我们就提交了.只是等待审核的时间超过两周. 回想起来,当时听到苹果推出来新的编程语言的时候,我们立刻决定采用swift来开发我们的app.原因很简单:第一.技术合伙人之前从来没有学过Object C,从来没有开发过iOS的应用.第二.我们之前的app是外包的,很多需求没有办法跟进. 最初觉得使用swift的时候,其实抱着一种试一试的态度.毕竟这个语言和开发工具都处在

从Java/Android到Swift iOS开发:语言与框架对比

本文是我在『移动前线』微信群2016年4月28日的分享总结整理. 我从2009年开始做Android开发,开始接触Swift是在2014年底,当时组里曾经做过一个Demo App,感觉技术还不够成熟没有正式发布.2016年初我们正式使用swift开发上线了销售助手App产品,积累了比较丰富的swift项目实战经验,开源框架都是用的swift版本,大量使用了面向协议和函数式编程.iOS App开发人员基本都是以前安卓版本的开发人员,同时维护安卓和iOS 2个版本,效率很高. 今天分享的主题是Jav

Swift项目开发实战-基于分层架构的多版本iPhone计算器-直播公开课

本课程采用Q Q群直播方式进行直播,价值99元视频课程免费直播.完整的基于Swift项目实战,手把手教你做一个Swift版iPhone计算器.(直播过程也有惊喜!)直播Q Q群:362298485(直播时点击群视频即可进入直播课堂)直播时间:8月26日(周二),9月2日(周四),每天20:00-22:00欢迎咨询客服Q Q:1575716557直播后希望继续深入学习了解本课程可在51CTO学院购买本课程,定价99元.购买课程更有惊喜:买课程送书,送优惠券了! 购买本课程赠送关东升老师价值69元国

Flutter 混合开发 (交互通信)

上篇我们介绍了 Flutter 模块集成到已有的项目工程,接下来我们看看 Native 跟 Flutter 间的交互问题. 交互通信 Flutter 与原生之间的通信依赖灵活的消息传递方式: 1,Flutter 部分通过平台通道将消息发送到其应用程序的所在的宿主环境(原生应用). 2,宿主环境通过监听平台通道,接收消息.然后它会调用平台的 API,响应 Flutter 发送的消息. Flutter主动 调用 宿主环境 在 Flutter 中通过 MethodChannel 的 API 可以发送与

混合开发

1.混合开发概述 Hybrid App主要以JS+Native两者相互调用为主,从开发层面实现"一次开发,多处运行"的机制,成为真正适合跨平台的开发.Hybrid App兼具了Native App良好用户体验的优势,也兼具了Web App使用HTML5跨平台开发低成本的优势. 目前已经有众多Hybrid App开发成功应用,比如美团.爱奇艺.微信等知名移动应用,都是采用Hybrid App开发模式. 2.移动应用开发的三种方式比较 移动应用开发的方式,目前主要有三种: Native A