OC项目中使用Swift

OC项目中使用Swift

本文版权归作者所有,如需转载请联系孟祥月

CSDN博客:http://blog.csdn.net/mengxiangyue

独立博客:http://mengxiangyue.com

最近公司的项目开始计划使用Swift,由于原先的工程都是使用OC编写的,不可能一下全部转换成Swift,所以采用OC与Swift混编的方式是最好的选择。这篇文章只是一个简单的介绍,并没有太高深的知识。

我新建了一个演示的OC工程,当然你可以使用你已经存在的OC的工程。如果我们想要在OC工程中使用Swift的代码,Swift的代码默认是使用module管理的,同样这里我们也需要把我们的Swift代码作为一个module暴露给我们的OC工程,修改下面的配置:

上面的修改了一个配置项,有一个Product Module Name在后面会使用。

在工程里面点击File/New/File…,选择iOS/Source/Cocoa Touch Class,按照如下填写创建一个新的文件:

上图中的Subclass of一定要设置为NSObject或其子类,否则OC工程将不会找到该类。

点击确认后会选择保存路径,点击Create,出现如下界面:

这个界面是询问是否创建桥接的头文件,这个文件在Swift调用OC代码的时候比较管用,但是在OC中调用Swift的时候我发现没有什么卵用。

选择Don’t Create按钮。

在Test.swift中添加如下的代码(解释都在注释里面了):

import UIKit

/*
    如果Swift类想要被OC发现,必须继承自NSObject并且使用public标记,并且该类中想要被OC访问的方法也必须使用public标记,具体知识可以去看Swift的访问控制
    原因:Swift的代码对于OC来说是作为一个module存在的

    当然全局的Swift函数,我还没发现怎么在OC中访问,如果哪位清楚还请告诉一下,谢谢!
*/

public class Test: NSObject {
    public func log() {
        print("这是Swift的方法")
    }
}

public func globalLog() {
    print("这是Swift全局的log方法")
}

我们在我们想要调用Swift类的方法里面引入头文件:”Product Module Name-Swift.h”,其中Product Module Name替换成在上面配置项中显示的内容,例如:

#import "ViewController.h"
// 引入Swift头文件
#import "OCAndSwift-Swift.h"

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    // 使用Swift的类
    Test *test = [[Test alloc] init];
    [test log];
}

@end

这样我们就能够在OC中使用Swift的代码了,最后还要说明一点:”Product Module Name-Swift.h”(例子中的是OCAndSwift-Swift.h),是由编译器自动生成的,如果import后没有提示,编译一下。并且只有在工程中包含至少一个Swift文件的时候,才会自动生成这个文件,所以如果工程中如果没有Swift文件的时候,就算在配置中设置对了,import该文件也会报错。

时间: 2024-11-09 06:34:43

OC项目中使用Swift的相关文章

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

对于已经工作的开发者,并不适合也没有条件从一个全新的swift项目开始,进行开发. 虽然网上关于swift和oc混合编程的教程比较多,但是大多是基于 swift项目的,所以对咱们 OCer的参考价值有一定折扣. 现在swift虽然仍然存在很多缺陷,但是鉴于苹果的强势,是时候在项目中把简单的功能交给swift了,给自己,给项目,给swift一个缓冲区,都是极好的. 说了这么多,开始上代码. 现在的背景是: 已经有一个oc项目了,我想要加入 swfit,并且实现 oc调用 swift ,swift调

在oc代码中使用swift第三方框架

swift现在使用越来越多了,一些主流的框架或者效果比较好的demo都陆陆续续使用swift写了.所以,要学会如何在oc的项目中调用swift. 这里主要借助一个桥梁文件,这个桥梁文件一般在你导入swift代码或者创建swift代码的时候会询问你是否创建,这个时候要选择创建,然后就可以在oc项目里引入桥梁文件,从而可以创建swift对象,使用其相应方法了. 但是这里有可能会出现oc中无法调用swift代理方法的情况,下面两个学习资料对这块有比较详细的介绍,可以学习一下. 参考资料:iOS-Swi

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

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

CocoaPods OC项目引入第三方Swift库 问题

include of non-modular header inside framework module '**' 问题解决办法 Targets->Build Settings->CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES

在OC项目工程中混编Swift

1.创建一个OC项目工程,然后在Build Settings中找到如下字段,修改. 2.然后在项目中创建swift文件,如果系统提示是否需要创建桥接文件的时候,点击确定. 然后在Build Settings,查找swift, 如图所示,会显示两个文件,一个上桥接文件(在项目工程中可见), 另一个是swift编译的.h文件(在项目工程中不可见), 但是可以使用按住Option+点击的方式进入查看. 3. 新建的swift类必须继承自NSObject或其子类,(NSObject是所有类的子类). 否

iOS 中 OC项目使用swift第三方工具(OC、swift 混合)

OC项目引入swift, 1.建立 bridge 文件:在OC工程中新建swift文件,确认创建时,会提示建立 一个 项目名-bridging-header.h 文件. 2,建立 bridge 文件之后,在其中引入要用的 文件名  import 例如使用Charts 时: @import Charts; Charts : 各种统计图形(饼状图.折线图.柱状图等等)工具,流畅好用,效果给力. 3,在工程中需要用到第三方的时候,引入该 bridge 文件即可:

Swift & Objc 在同一个项目中的使用

在WWDC大会中发布了Swift让人眼前一亮.终于加了很多的现代编程语言该有的东西.很早年以前玩C#3.0+的时候这些差不多类似的 已经用的烂熟的东西终于一点一点的在看Swift Programming Language的时候再唤醒. Swift较之于OC(Objective-C)在愈发上几乎是一门新的语言了,幸运的是Swift和OC都是出自苹果大家庭,还能在一张桌子上吃饭.也就是说在升级项目 的时候你可以考虑使用Swift开发新的功能,调用已有的部分或者被已有的部分调用.或者在Swift开发的

iOS 项目中的文件 - projectname-Info.plist - projectname-Prefix.pch

A.项目中的常见文件 1.单元测试Test 2.Frameworks(xCode6 创建的SingleView Project没有) 依赖框架 3.Products 打包好的文件 4. projectname-Info.plist 全局配置文件 所以最好其他的plist文件不要带有Info字眼 (1)更改项目名 a.修改Bundle display name b.clean c.模拟器删除app,重新生成 (2)Bundle Identifier App唯一标识符 (3)stroyboard入口

[iOS基础控件 - 6.10.4] 项目启动原理 项目中的文件

A.项目中的常见文件 1.单元测试Test 2.Frameworks(xCode6 创建的SingleView Project没有) 依赖框架 3.Products 打包好的文件 4. projectname-Info.plist 全局配置文件 所以最好其他的plist文件不要带有Info字眼 (1)更改项目名 a.修改Bundle display name b.clean c.模拟器删除app,重新生成 (2)Bundle Identifier App唯一标识符 (3)stroyboard入口