在OC项目中添加Swift文件并实现混合编程

对于已经工作的开发者,并不适合也没有条件从一个全新的swift项目开始,进行开发. 虽然网上关于swift和oc混合编程的教程比较多,但是大多是基于 swift项目的,所以对咱们 OCer的参考价值有一定折扣.

现在swift虽然仍然存在很多缺陷,但是鉴于苹果的强势,是时候在项目中把简单的功能交给swift了,给自己,给项目,给swift一个缓冲区,都是极好的.

说了这么多,开始上代码.

现在的背景是: 已经有一个oc项目了,我想要加入 swfit,并且实现 oc调用 swift ,swift调用oc .

1.新建一个swift文件

2.接下来会询问你是否建立桥接文件,点击是 ,那么我后面的就是多余的了,所以选择取消,我们手动建立桥接文件

3.手动建立桥接文件:新建头文件

关于命名: 有经验的人都知道,这个头文件是项目公用的,同时如果自动创建,文件名也是 :

项目名-Bridging-Header.h

但是因为我现在的项目名是中文,所以我自己命名了一下.

4. 配置头文件

在build setting里面搜索 swift ,根据实际情况进行配置:

注意:是相对于工程文件所在的相对路径.从 Finder里面看,不要让项目中得group扰乱你的判断

5.在头文件中引入需要的 oc头文件,这里我就用 UIKit了

6.编写代码

可以看到,我们可以使用UIKit的类了

注意:关于自定义类,希望有个好的命名规范,那么在混合编程中,你将受益无穷

7.oc调用swift

现在因为测试我想把窗口的根控制器设置为我的swift的那个.

因为swift没有头文件,所以不好办了...

其实,系统默认给我们生成了头文件(需要我们的swift类是NSObject的直接或者间接子类),我们只要引入

项目名-Swift.h

没办法了,我的项目名是中文...

引入:

8.使用 swift的类

9.运行

一切正常 (好丑,不要吐槽)

时间: 2024-08-01 22:44:36

在OC项目中添加Swift文件并实现混合编程的相关文章

在一个项目中同时使用Swift和Objective-C代码混合编程的方法

主要介绍了在一个项目中同时使用Swift和Objective-C代码的方法,在一个工程中同时使用Swift和Objective-C混合语言编程的方法. Swift 与 Objective-C 的兼容能力使你可以在同一个工程中同时使用两种语言.你可以用这种叫做 mix and match 的特性来开发基于混合语言的应用,可以用 Swfit 的最新特性实现应用的一部分功能,并无缝地并入已有的 Objective-C 的代码中. Mix and Match 概述 Objective-C 和 Swift

OC项目中使用Swift

OC项目中使用Swift 本文版权归作者所有,如需转载请联系孟祥月 CSDN博客:http://blog.csdn.net/mengxiangyue 独立博客:http://mengxiangyue.com 最近公司的项目开始计划使用Swift,由于原先的工程都是使用OC编写的,不可能一下全部转换成Swift,所以采用OC与Swift混编的方式是最好的选择.这篇文章只是一个简单的介绍,并没有太高深的知识. 我新建了一个演示的OC工程,当然你可以使用你已经存在的OC的工程.如果我们想要在OC工程中

aps.net core项目中添加静态文件

1.在project.json中dependencies下注册Microsoft.AspNetCore.StaticFiles"(也可通过nuget安装),如下所示: "dependencies": { ...... , "Microsoft.AspNetCore.StaticFiles": "1.0.0" } 2.在Startup类中的Configre方法里调用UseStaticFiles扩展方法来实现: public void Co

AndroidStudio Gradle项目中添加.so文件

其实弄了大半天无非就是把.SO文件打包到APK的lib文件夹中,假如仔细阅读了Gradle的使用方法,自然就知道其实Gradle官方在新版已经自动实现了打包.SO文件的.很简单,跟eclipse一样,首先把armeabi 等等文件加考到app目录下的libs里,接着就是在配置的android节点下加入下面的内容就ok即build.gradle的android节点下: sourceSets { main { jniLibs.srcDirs = ['libs']  } }

再eclipse的javaweb项目中添加JQuery文件时jquery-2.1.4.min.js报错

解决方法: eclipse导入jquery包后报错,下面有个不错的解决方法,需要的朋友可以参考下 eclipse导入jquery包后报错,处理步骤如下: 1.打开项目.project文件,去掉如下内容: <buildCommand> <name>org.eclipse.wst.jsdt.core.javascriptValidator</name> <arguments> </arguments> </buildCommand> 2.

C#.NET常见问题(FAQ)-使用SharpDevelop开发 如何在项目中添加类文件

点击文件-新建-文件,然后再工程内创建文件 ? 或者工程-添加-新建项 ? ? 更多教学视频和资料下载,欢迎关注以下信息: 我的优酷空间: http://i.youku.com/acetaohai123 ? 我的在线论坛: http://csrobot.gz01.bdysite.com/ ? 问题交流: QQ:910358960 邮箱:[email protected] ? ?

在vs2008中添加lib文件以及一些常用项目设置选项

下面以添加ws2_32.lib文件为例 方法一(直接添加代码): 直接在.cpp文件中,添加#pragma comment(lib, "ws2_32.lib");即可.(ws2_32.lib即为你要添加的lib文件) 方法二(在vs工具栏中添加): 1.项目(project) -> TcpSrv属性(TcpSrv properties) (其中TcpSrv为工程名) 2.打开TcpSrv属性页后,配置属性 -> 链接器(linker) -> 输入(Input) ,在附

Android Studio-Gradle项目中添加JNI生成文件(.so文件)

当使用gradle时,添加.so和jar包遇到报错: java.lang.UnsatisfiedLinkError: Couldn't load faceppapi: findLibrary returned null 解决办法是将build.gradle写成如下形式: apply plugin: 'android' android { compileSdkVersion 19 buildToolsVersion "19.0.0" defaultConfig { minSdkVersi

Resx 文件无效。未能加载 .RESX 文件中使用的类型 System.Collections.Generic.List`1请确保已在项目中添加了必需的引用。

在C#程序编写过程中,会遇到:Resx 文件无效.未能加载 .RESX 文件中使用的类型 System.Collections.Generic.List1`请确保已在项目中添加了必需的引用. 主要原因很可能是使用了类的可序列化的原因,代码如下: [Serializable] public class TimeLineItem { public string Title; public string Content; public TimeLineItem(string content) { th