怎么让一个项目里swift与OC可以兼容混合开发?

在苹果推出了swift语言之后,很多人担心OC很快会被取代,但是苹果方面表示2年内不会摒弃OC。但现在也快了啊。有的开发团队已经开始基于swift开发,但是有很多旧的框架还没来得及用swift写出来,并且某些swift的功能你还不会写,想用OC写。因此在swift开发的程序中时不时会用到OC的类,怎么让两门语言在一个程序里无缝衔接? 其实很方便

如果你不是在董铂然博客园看到本文请 点击查看原文

如图这是一个新建的swift项目,里面直接拖入了一个SVProgressHUD框架

因为swift语言里,同一个项目内的文件基本会放在同一个命名空间下,所以用项目中某类的方法都是不用导入头文件的,这的确很方便。

但是拖入了OC框架后想用OC框架里的方法时,你导入框架的头文件到ViewController.swift 会报错的,这就不截图了。

解决方案是 新建一个Header File文件

如图建好之后,在这个文件里导入框架。

接下来,到项目部署里引用此文件

模仿图中的路径,就是这个项目的文件夹下的Head File文件

cmd+B 变异一下 如果success就说明到这你都没有写错。

然后在ViewController.swift文件里,用swift的格式来调用这个方法

比如写一个点击方法(切记不用导入头文件!只需要直接写这个方法)

    override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
        SVProgressHUD.show()
    }

运行后点击一下

到此就完成了OC与swift之间的桥接。HUD指示器框架已经和swift项目无缝衔接。 后续如果还有别的OC类 那就把头文件导入到这个 Demo-Bridge.h文件里,就能在项目的其他地方用swift的语法(也就是点语法)调用了。 这里要切记。1.不要用OC语法调用。 2.不要在swift后缀的文件里导入任何头文件。

如果你不是在董铂然博客园看到本文请 点击查看原文

当然这篇文章用到的环境是最新的XCode6.3 beta2.  模拟器和SDK都是iOS8.3。 如果低版本的Xcode在桥接时遇到种种问题,请升级或下载到最新版本开发,因为swift语言每个版本还有微调的。

时间: 2024-10-05 22:53:13

怎么让一个项目里swift与OC可以兼容混合开发?的相关文章

Swift、OC、C++混合编程

OC调用C++: 1.创建oc工程: 2.主要步骤:将某个.m文件后缀改为.mm, 3.创建c++文件 #ifndef __Test__CPPHello__ #define __Test__CPPHello__ #include <stdio.h> class CPPHello { public: static void hello(); }; #endif /* defined(__Test__CPPHello__) */ CPPHello.h 1 void CPPHello::hello(

OC与JS混合开发

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

项目里面Swift和OC 交叉使用

在OC的项目中使用Swift 语言开发 创建swift文件,同时创建桥接文件.(桥接文件里面不用导入头文件) 在swift文件中完成代码的编写. 在某OC类的.m文件中,使用swift文件.方法;#import "OC工程的产品名-Swift.h" <固定的,不要乱写> 头文件导入成功以后,就可以在OC类中使用该Swift类 在Swift项目中使用OC语言开发 创建OC文件,同时创建桥接文件 在桥接文件中导入你需要在Swift类中使用的OC类的头文件,例如:#import

C++一个项目里有两个CPP文件,想在一个CPP文件里调用另一个CPP文件的计算结果,怎么实现啊?

把1.cpp和2.cpp放到同一目录下,例如:1.cpp 代码如下#include <iostream> int main(){ void ChangeFunction(int* input, int n); void PrintData(int* input, int n); int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; PrintData(a, 10); ChangeFunction(a, 10); PrintData(a, 10); return

在github新建一个项目里需要哪些文件及作用

1.README.md文件 关于项目的介绍和使用方法. 2.  .gitignore文件 上传项目时不需要传的文件,最常用的就是“node_modules/",如下: 详细的介绍可以去git官网上看:https://git-scm.com/docs/gitignore 规则总结如下: 匹配模式前 / 代表项目根目录 匹配模式最后加 / 代表是目录 匹配模式前加 ! 代表取反 *代表任意个字符 ?匹配任意一个字符 **匹配多级目录 3. .npmignore文件 项目如果要发到npm上共别人使用,

Django中一个项目里怎么使用两个数据库

在django项目中, 一个工程中存在多个APP应用很常见. 有时候希望不同的APP连接不同的数据库,这个时候需要建立多个数据库连接. 1. 修改项目的 settings 配置 在 settings.py 中配置需要连接的多个数据库连接串 2. 设置数据库的路由规则方法 在settings.py中配置DATABASE_ROUTERS 1DATABASE_ROUTERS = ['Prject.database_router.DatabaseAppsRouter'] Project: 建立的djan

将一个项目导入到另一个项目里

一. 作为lib库导入 首先找到需要导入的项目的中的project.properties文件,设置android.library=true: 到现有项目中,右键----properties----Android,在下面的library选项卡中点 Add, 然后选择需要导入的库即可. 二.  将项目作为jar包导入到项目中 的右键要导出的项目----Export---JAVA---JAR file 只勾选src文件夹和assets文件夹,如果assets文件夹没东西不选也行.如果用到AIDL技术的

HibernateUtil.java,用于打开和关闭session,可在每一个项目里复用

1 package cn.jbit.auction.dao; 2 3 import org.hibernate.Session; 4 import org.hibernate.SessionFactory; 5 import org.hibernate.cfg.Configuration; 6 7 public class HibernateUtil { 8 // 初始化一个ThreadLocal对象 9 private static final ThreadLocal sessionTL =

Swift与OC交互

Swift与OC交互 源码请点击github地址下载. 主要功能: 1.在OC项目里: 1.1.OC代码调用Swift方法 1.2.Swift代码调用OC代码. 2.在Swift项目: 2.1.Swift代码调用OC代码 2.2.OC代码调用Swift方法. 不管在什么项目里,在创建另外一种开发语言文件时系统会提示创建桥接文件OCAndSwift-Bridging-Header.h(其中OCAndSwift代表项目名称.),一定得有这桥接文件swift代码才能调用OC. 功能1.1与2.2他们都