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编程。
首先创建一个Object-Cproject
右击项目名称。在弹出的快捷菜单上点击“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
首先创建一个Swiftproject
右击项目名称,在弹出的快捷菜单上点击“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")
总结一下:
Swift与Objective-C的互调在前期创建步骤基本同样
中期都会提示生成一个桥接文件,都是第一次的时候会提示,再创建就不会再次提示,但两者是有差别的:Objective-C中调用Swift时生成的是隐式的,而Swift调用Objective-C时是显式的桥接文件
最后在Objective中调用Swift时须要在所在类上边加上格式为#import “项目名称-swift.h”的头文件,而而Swift调用Objective-C时却是在显式的桥接文件里引入Objective-C的头文件
Object-C与Swift混合开发的更多相关文章
- Android &Swift iOS开发:语言与框架对比
转载自:http://www.infoq.com/cn/articles/from-android-to-swift-ios?utm_campaign=rightbar_v2&utm_sour ...
- android混合开发,webview的java与js互操作
android原生应用,用webview加载应用中的网页,并且java代码与js代码可以互相操作. 这是混合开发的基石,最基本也最重要的东西,实验代码在这里. 概括说说—— java调js:调用web ...
- (读书笔记)Asp.net Mvc 与WebForm 混合开发
根据项目实际需求,有时候会想在项目中实现Asp.net Mvc与Webform 混合开发,比如前台框架用MVC,后台框架用WebForm.其实要是实现也很简单,如下: (1)在MVC 中使用Webfo ...
- Swift项目开发实战-基于分层架构的多版本iPhone计算器-直播公开课
Swift项目开发实战-基于分层架构的多版本iPhone计算器-直播公开课 本课程采用Q Q群直播方式进行直播,价值99元视频课程免费直播.完整的基于Swift项目实战,手把手教你做一个Swift版i ...
- Asp.net Mvc 与WebForm 混合开发
根据项目实际需求,有时候会想在项目中实现Asp.net Mvc与Webform 混合开发,比如前台框架用MVC,后台框架用WebForm.其实要是实现也很简单,如下: (1)在MVC 中使用Web ...
- 《React Native 精解与实战》书籍连载「iOS 平台与 React Native 混合开发」
此文是我的出版书籍<React Native 精解与实战>连载分享,此书由机械工业出版社出版,书中详解了 React Native 框架底层原理.React Native 组件布局.组件与 ...
- 移动端Tap与滑屏实战技巧总结以及Vue混合开发自定义指令
最近在忙混合开发,因交互相对复杂,所以也踩了很多坑.在此做一下总结. 1.tap事件的实际应用 在使用tap事件时,老生常谈的肯定是点透问题,大多情况下,在有滑屏交互的页面时,我们会在根节点阻止默认行 ...
- 混合开发 Hybird Cordova PhoneGap web 跨平台 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- [转]Asp.net Mvc 与WebForm 混合开发
本文转自:https://www.cnblogs.com/dooom/archive/2010/10/17/1853820.html 根据项目实际需求,有时候会想在项目中实现Asp.net Mvc与W ...
随机推荐
- idea java项目部署至Tomcat服务器
1. 服务器部署TomCat 1. 安装JDK,配置环境变量 > 变量名:JAVA_HOME;变量值:C:\Program Files\Java\jdk1.7.0_45 ...
- Java钉钉开发_03_通讯录管理之 人员管理 和 部门管理
一.本节要点 1.通讯录权限 ISV(应用服务商)默认无管理通讯录的权限,企业应用默认有所有通讯录权限. 2.数据传输格式—JSON 请参见: Java_数据交换_fastJSON_01_用法入门 二 ...
- Windows命令行command的Shell命令详细解析和语法
CMD命令大全及详细解释和语法 Microsoft Windows XP [版本 5.1.2600] 有关某个命令的详细信息,请键入 HELP 命令名 ASSOC 显示或修改文件扩展名关联. A ...
- Espresso浅析和使用
欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ Espresso是一个Google官方提供的Android应用UI自动化测试框架.Google希望,当Android的开发者利用Espress ...
- NodeJS 常用模块积累
cluster&forever cluster & forever 虽然 nodejs 原生已经提供了 cluster 模块,大部分情况下可以满足我们的基本需求,但这两个模块 clus ...
- K-Means和图片压缩
通俗的介绍这种压缩方式,就是将原来很多的颜色用少量的颜色去表示,这样就可以减小图片大小了.下面首先我先介绍下K-Means,当你了解了K-Means那么你也很容易的可以去理解图片压缩了,最后附上图片压 ...
- mysql数据库常用命令笔记
连接数据库:mysql -h localhost -u root -p 000000 退出:exit; \q; quit; SET foreign_key_checks = 0; 禁用外键 ...
- Less注释语法
Less注释语法 适当的注释是保证代码可读性的必要手段,Less支持两种类型的注释:多行注释和单行注释. 1)形如 /* */ 的多行注释.如: /* Hello, I'm a CSS-style c ...
- 永中DCS再添喜讯:顺利签约海信集团
近日,永中DCS与海信集团一起携手,共创文档在线预览新篇章.出于对永中DCS文档在线预览产品的品质与服务的信赖,海信集团选择永中DCS为其提供文档在线预览技术支持,助力移动化办公(EHR系统)发展,提 ...
- null id in entry (don't flush the Session after an exception occurs) 解决方法
最近在学习基于ssh的注解的系统,然后在实现往数据库增加记录时可以增加第一个,第二个就报错,在网上查了很多资料,大多都是 该异常信息是在提示我们没有为数据中的非空字段设置值. 然后就一直没有明白 明明 ...