在项目里交叉使用Swift和OC

From: http://blog.csdn.net/huangchentao/article/details/35278663

 

Swift and Objective-C in the Same Project
在项目里交叉使用Swift和OC

Swift与OC的兼容性使得你可以在项目里使用Swift+OC的方式编写应用程序,称为混合+匹配(mix and match),用这种方式可以一边使用享受新语言的快速特性,一边无缝的接合你已有的OC代码(原文听起来好NB的样子,其实也就那么回事),不管项目最初是用OC编写的还是新建的Swift项目,都可以在这个项目里用OC和Swift混合继续开发



Importing Objective-C into Swift

在Swfit代码中添加OC文件的时候,需要依赖一个bridging header文件,Xcode会在你新建一个OC文件的时候自动帮你创建(项目是使用Swift语言创建的),点击yes,Xocde就会在新建OC文件的同时帮我们新建一个 xxx-Bridging-Header.h 文件,xxx是你的项目名称(Product Module),然后我们得编辑这个文件才能让Swfit代码调用OC代码


在项目的xxx-Bridging-Header.h文件里,添加需要在Swift里调用的OC文件,然后就可以在Swfit代码中调用了

OBJECTIVE-C
[objc] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. #import "XYZCustomCell.h"   
  2. #import "XYZCustomView.h"   
  3. #import "XYZCustomViewController.h"  
#import "XYZCustomCell.h"
#import "XYZCustomView.h"
#import "XYZCustomViewController.h"

SWIFT
[objc] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. let myCell = XYZCustomCell()  
  2. myCell.subtitle = "A custom cell"  
let myCell = XYZCustomCell()
myCell.subtitle = "A custom cell"

在项目的 Build Settings 选项里,要确保Swift Compiler选项里有这个Bridging Header文件的设置,路径必须指向文件本身,而不是目录。


Importing Swift into Objective-C

当在OC里调用Swift中的代码时,需要依赖一个xcode自动生成的头文件,这个自动生成的头文件定义了项目中所有的Swift文件,这个头文件的命名为 “xxx-Swift.h” ,xxx为项目的名称,此外就不需要再做任何事情了,你只需要在OC代码里导入这么一个文件,就可以跟没事一样拿任意一个Swift中的代码用了
[objc] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. #import “ProductModuleName-Swift.h”  
#import “ProductModuleName-Swift.h”

以上归纳为一个表

 调用Swift代码调用OC代码
Swift代码无需声明#import "ProductModuleName-Swift.h”
OC代码依赖bridging header文件#import "Header.h”

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/403911.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IE请求json数据时出现下载文件的现象。

当使用IE浏览器请求服务器时&#xff0c;会出现下载json文件的现象&#xff0c;就需要在spring-MVC.xml文件里配置&#xff1a; <bean class"org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" id"mappingJacksonHttpMessageCon…

Linux下查看TOMCAT控制台

Linux下查看TOMCAT控制台 $ ./catalina.sh run 就可以了。 debug模式&#xff1a; $ ./catalina.sh debug ...... help (查看帮助) exit&#xff08;退出、终止tomcat&#xff09; catalina.sh [para] para: debug start Catalina in a d…

Nandflash希尔特编程器烧录带来的一些点知识信息

1&#xff0e;NAND FLASH的特殊性 1)存在坏块。NAND FLASH由于其生产工艺的原因&#xff0c;出厂芯片中会随机包含坏块。坏块在出厂时已经被初始化&#xff0c;并在特定区域中存在标记&#xff0c;如果在使用过程中出现坏块&#xff0c;也需要进行标记。2)易出现位反转。NAND F…

WireShark抓包,may be caused by ip checksum offload的解决办法

From: http://blog.csdn.net/yanjiee/article/details/8051494 今天在用WireShark抓包的时候&#xff0c;发现由本机发出去的包都是黑底红字&#xff0c;点进去看了一下发现都是报“may be caused by ip checksum offload”这样一个错误。 于是在网络上搜了一下关于Checksum o…

使用Dezender对zend加密后的php文件进行解密

在开发中需要修改一些php文件&#xff0c;部分是通过zend加密的&#xff0c;记事本打开之后是这样的&#xff1a; 此时需要使用Dezender进行解密&#xff0c;下载链接如下&#xff1a; Dezender.7z 下载后解压到C盘(路径不要带有中文)&#xff0c;如解压到其他位置&#xff0c;…

vue cli3 兼容ie8以上浏览器,前端兼容;解决ie浏览器下白屏问题

1下载 babel-polyfill 模块 npm install babel-polyfill -s2入口文件&#xff08;main.js&#xff09;第一行引入 import "babel-polyfill"; import Vue from vue import App from ./App.vue import router from ./router import store from ./store import Button…

project下查看那些文件夹是空的

git不能追踪空文件夹。我们在空文件夹下添加readme.txt文件来解决。有时候我们不知道project下到底有那些文件夹是空的。使用 find -type d -empty 就能列出来。

Ubuntu 12.04 安装设置gcc4.4

在Ubuntu 12.04中的默认的GCC版本是4.6。但是这个版本在编译android 4.0源码的时候会出差&#xff0c;下面是安装和设置GCC4.4的方法。 下文来自网络&#xff1a;http://mjanja.co.ke/2012/04/ubuntu-gcc-4-4-considered-harmful/ I’ve been having some problems with Ubuntu…

ffmpeg在windows下的编译

From: http://blog.csdn.net/kidleaf2/article/details/7925283 1、 下载编译环境MinGWMsys&#xff0c;地址是&#xff1a;http://sourceforge.net/projects/mingwbundle/files/&#xff0c;在这个页面上点击Download下载那个zip文件。下载完成后&#xff0c;直接安装&#…

在maven中开发Spring需要的jar依赖

在maven中开发Spring需要的jar依赖 <properties><spring.version>4.0.6.RELEASE</spring.version> </properties> spring jar <dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId>…

vue-cli3引入第三方的js依赖包并使用其方法

注意&#xff1a;引入第三方的包有两种&#xff0c;一种是做特殊要求必须如何引用的&#xff1b;一种是没有要求的 情况1&#xff1a;js包要求了如何引入的&#xff0c;按照其文档的方式引入和使用即可 1.1直接在indes.html按照要求引入 1.2使用方法 情况2&#xff1a;没…

autoconf.mk详析

uboot的顶层Makefile中有如下的一段代码[plain] view plaincopy # # Auto-generate the autoconf.mk file (which is included by all makefiles) # # This target actually generates 2 files; autoconf.mk and autoconf.mk.dep. # the dep file is only include in this …

trigger

trigger() 方法触发被选元素的指定事件 <html><head><script type"text/javascript" src"/jquery/jquery.js"></script><script type"text/javascript">$(document).ready(function(){ $("input").sele…

[转]关于java 内存泄露

http://www.lybbs.net/news_read.do?newsPath2007/9/25/1190684628458.html 1 引言 Java的一个重要优点就是通过垃圾收集器GC &#xff08;Garbage Collection&#xff09;自动管理内存的回收&#xff0c;程序员不需要通过调用函数来释放内存。因此&#xff0c;很多程序员…

用FFmpeg从视频截取任意一帧图片的解决办法~

From: http://www.cnblogs.com/yao/archive/2006/01/17/318772.html 在我的另一篇日志中,说到利用FFmpeg从视频截图的命令,那天在找从视频截取指定帧的图片的办法,这么多天没有进展,原来我从网上找的关于FFmpeg的参数命令列表并不全,少了-ss这么一个参数.于是这个问题也到现在…

简单聊一下makefile中的 =, :=, ?=和+=

最容易混淆的是 和:&#xff0c; 我们先来看看makefile:[plain] view plaincopyx hello y $(x) x world test1: test1.cpp echo $(y) 执行make后&#xff0c; 结果为world, 再看改动后的makefile:[plain] view plaincopyx hello y : $(x) x world test1: tes…

近期任务

1&#xff1a;学习吴恩达的视频&#xff0c;作总结 2&#xff1a;学习电脑的MATLAB神经网络课程视频 6&#xff1a;人脸识别与检测视频 3&#xff1a;学习splib书和对应的视频 4&#xff1a;准备天池竞赛 5&#xff1a;准备HDFS论文 关注teashou开源项目 学习caffe视频,weka图…

都是大人物,看看你认识几个。

突然找到一张老图&#xff0c;但是一直没能认识全部的人&#xff0c;下面名单是填的&#xff0c;不一定都正确。 &#xff08;想要原图留下邮件&#xff0c;我偶尔上来&#xff0c;如果看到会发给你的&#xff09; 1Bill Gates 比尔盖茨2Audrey Hepburn奥黛丽赫本3Charlie Cha…

ant中的table行列不对齐问题,以及换行,隐藏等问题

注意&#xff1a;ant中的table表格&#xff0c;列的宽度如果设置了&#xff0c;那么该列就是设置的宽度&#xff1b;那些没设置宽度的列&#xff0c;列宽&#xff08;总宽度 - 设置的列宽总和&#xff09;/ 未设置的列的个数&#xff0c;即平均宽度&#xff1b; 1.如果表格只是…