http://blog.csdn.net/iflychenyang/article/details/8876542(如何在Objective-C的头文件引用C++的头文件

1.将.m文件扩展名改为.mm,或者修改.m文件的File Type,改为Objective C++ Source.

2.将.h文件File Type改为Objective C++ Preprocessed Source,默认C Header.

注意:File Type 在xcode右边属性栏中修改

视频:http://www.jikexueyuan.com/course/261.html

参考:http://www.tuicool.com/articles/QZNrErM

一个从Swift调用ObjC函数的例子 :http://www.cocoachina.com/bbs/read.php?tid=204684

即使你尽量用Swift编写iOS程序,难免会遇到部分算法是用C++语言编写的。那你只能去问问”度娘“或“狗哥”怎么用 Swift 调用C++算法。

一,C,C++, Objective-C,Swift有什么关系,还有什么是混编 -.-?

1. 当然是兄弟关系,虽然Objective-C是扩充C的 面向对象 编程语言,C++是在C语言的基础上开发的一种通用 编程语言 。Swift是由苹果公司推出有意让其与Objective-C共存于苹果公司操作系统上。但是Objective-C一直是由苹果公司来抚养,C,C++也因为苹果公司才变得如此流行。

2. 混编,就是混合编译-.-强大吧,好好感受史蒂夫 乔布斯对开发技术人员的尊重和期待。

3. C,C++, Objective ,Swift 但就像《 葫芦娃 》里面七个兄弟中的四个一样牛掰,七葫芦娃是最厉害的,但需要七个兄弟齐心协力才能收妖。类似的,Swift是最小的弟弟,这就意味着Swift是最厉害的。我们在接近新宠Swift的同时,也要经常复习其他语言,不要忘记他的哥哥们。

二,小小的比较

1. Swift和Objective-C

我们都体会得到Swift调用Objective-C并不难,也不麻烦。你只要在swift的工程里创建OC的文件,系统就会提问帮你生成一个bridging-header,只要在这个bridging-header里import所有要用到的OC的头文件,就可以在swift文件里用swift的语言风格来调用OC类了。

2. Swift和C++

C++ 并不 是 像 Objective-C 这样。首先,我们应该想到 Objective-C 与 C++ 是 可以 混编 得 perfect ,而且可以使用 STL ,办法就 是 将 OC 的.m文件后缀改成.mm,然后在 OC 类中写一个 wraper ,然后在里面调用 C++ 的类,封装成几个公共的方法就可以了。这时再用 swift 来调用 wraper 里的方法,就可以执行 C++ 语句了。

三,iOS OC和Swift混编

1. 创建一个swift或者oc的工程:我这里是创建的Swift语言的工程,工程名SwiftTest

2. 在工程中代码目录下创建一个oc的类,选择oc语言, 会出一个对话框,选择YES

3. 这时会在工程里看到下图这样一个头文件.

4. 在这个头文件里添加你的OC文件的.h文件,就可以在任意swift文件中自行调用所包含的oc文件了。

5. 接下来在工程的target-》build Setting->package下个性如下两项

6. 然后在OC代码的.m文件中引入  + “-swift.h” 这样一个头文件,比如我的工程会生成 SwiftTest-swift.h这样一个头文件的。   然后你的.m文件就可以随便调用swift文件了。

其实如果你设置的Defines Module = YES了,   xcode就会默认生成Product Module Name - swift.h这样一个头文件,这个头文件下会有你所有.swift文件的.h信息。

http://files.cnblogs.com/files/lyggqm/Swift%E4%B8%8EOC%E4%B8%8ECplus%E6%B7%B7%E5%90%88%E7%BC%96%E7%A8%8B.zip

  吐槽,博客园上传文件的方式,令人发指!!我现在还没找到怎么上传文件到随笔里!

http://files.cnblogs.com/files/lyggqm/Swift%E4%B8%8EOC%E4%B8%8ECplus%E6%B7%B7%E5%90%88%E7%BC%96%E7%A8%8B.zip

[ios][swift]swift混编的更多相关文章

  1. Swift & OC 混编 浅析

    转载自:http://www.infoq.com/cn/articles/wangyi-cartoon-swift-mixed-practice?utm_campaign=rightbar_v2&am ...

  2. 在Swift中实现 oc与swift的混编

    在Swift中想要引用OC头文件(import),可采用混编的方法,这里以sqlite为例,采用OC-Swift桥的方式实现添加头文件1引入sqlite数据库的库文件 打开工程配置文件,在build ...

  3. iOS开发之OC与swift开发混编教程,代理的相互调用,block的实现。OC调用Swift中的代理, OC调用Swift中的Block 闭包

    本文章将从两个方向分别介绍 OC 与 swift 混编 1. 第一个方向从 swift工程 中引入 oc类 1. 1 如何在swift的类中使用oc类    1.2  如何在swift中实现oc的代理 ...

  4. cocoapod Podfile use frameworks swift/oc混编 could not build module xxx

    前置: 知名的pod: AFNetworking 我自己的pod:  AFNetworking+RX  3.1.0.18 里面有一段代码是: #import <Foundation/Founda ...

  5. swift语言混编--语言交互的接口

    FFI stands for Foreign Function Interface. A foreign function interface is the popular name for the ...

  6. OC与JS的交互(iOS与H5混编)

    大神总结WKWebView的坑:https://mp.weixin.qq.com/s/rhYKLIbXOsUJC_n6dt9UfA 在开发过程中,经常会出现需要iOS移动端与H5混编的使用场景. iO ...

  7. oc和swift的混编

    参考:http://blog.sina.com.cn/s/blog_8d1bc23f0102v5tl.html swift中使用oc类的方法 1.创建一个oc.h文件 2.添加需要倒入的oc类的头文件 ...

  8. swift OC混编工程,xcode断点调试,控制台左侧只有变量名称不显示值,右侧输入po命令,打印除一堆提示

    断点调试 (lldb) po 变量名warning: Swift error in module 项目名.Debug info from this module will be unavailable ...

  9. Swift中混编OC第三方库

    现在Swift的第三方库还比较少,有时候需要使用OC的第三方库,其实也是很容易的.   我们使用如下步骤: 1.新建的Swift项目,第一次创建OC文件时会询问是否生成 桥接头,选择是的话会生成一个桥 ...

  10. Swift oc 混编 - oc导入Swift协议

    (默认已经设置好桥接头文件)1.在Swift文件中写好协议2.oc类文件中导入:"项目名-swift.h"格式的文件 即:#include "项目名-swift.h&qu ...

随机推荐

  1. nsstring打印结构体

    // //  main.m //  09-常用结构体 // //  Created by apple on 14-3-20. //  Copyright (c) 2014年 apple. All ri ...

  2. Fiddler 的Window 8.1中不可以正常工作

    昨天晚上新升级了操作系统至Windows 8.1 Pro,发现使用Fiddler时网站不能正常使用,导致“代理错误”等信息. 解决方案: http://fiddler2.com/blog/blog/2 ...

  3. Java基础之处理事件——使用动作Action(Sketcher 6 using Action objects)

    控制台程序. 动作Action是任何实现了javax.swing.Action接口的类的对象.这个接口声明了操作Action对象的方法,例如,存储与动作相关的属性.启用和禁用动作.Action接口扩展 ...

  4. linux:问题

    1>.Xshell远程连接linux闲置时间过长会自动中断连接: 2>.在linux环境下乱码: 3>.在linux下面执行mv /bin/ls /root/bin之后执行ls就不能 ...

  5. 如何抠PSD素材中的图片

    在网上经常可以找到一些好看呢的PSD素材,如何才能将这些素材抠出来 存成一张张的png图片呢? 在PhotoShop中 1·隐藏无用的图层,然后窗口中仅剩需要看到的那个素材图 2·用工具选择该区域(注 ...

  6. HTML调用servlet(一)

    1.页面的数据表单 在使用Servlet处理用户请求之前,先准备一个页面,该页面用来提供数据表单.数据表单就是HTML中的<form>...</form>部分,当用户单击Sub ...

  7. Grunt 自动化部署之css、image、javascript、html压缩Gruntfile.js配置

    grunt.initConfig方法 用于模块配置,它接受一个对象作为参数.该对象的成员与使用的同名模块一一对应. 每个目标的具体设置,需要参考该模板的文档.就cssmin来讲,minify目标的参数 ...

  8. 浅谈js中的数据类型,使用typeof获取js数据类型

    JS中的数据类型 1):Undefined——值未定义 注:Undefined类型只有一个值,即特色的undefined.在使用var声明变量但未对其加以初始化时,这个变量的值就是undefined ...

  9. System.Web.HttpContext.Current.Server.MapPath("~/upload/SH") 未将对象引用设置为实例对象

    做项目的时候,System.Web.HttpContext.Current.Server.MapPath("~/upload/SH")   获取路径本来这个方法用的好好的 因为需要 ...

  10. server端推送消息机制

    推送技术相关请参加WIKI: https://zh.wikipedia.org/wiki/%E6%8E%A8%E9%80%81%E6%8A%80%E6%9C%AF 场景: 监控系统:后台硬件温度.电压 ...