Xcode 7.1项目中Objective-C和swift混合编程(一)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u010460963/article/details/49515555

最近项目中使用到了一个图表插件,由于这个图表插件使用swift写的,所以需要在项目中使用到swift语言。

苹果推出swift语言也有一段时间,由于swift1.0中bug太多,一直没在项目中使用。写这篇文章的时间swift已经更新到2.0。所以就决定在项目中使用swift,之后整个项目慢慢向swift过度。写了这篇文章,当做学习笔记吧,为有这样打算的开发人员提供一个思路。

废话不多说,下面开始正题:

演示的示例是在OC语言基础的工程中,使用swift,并且实现OC调swift,swift调用OC。

1、首先使用Xcode(v6.4-7.1),这里演示使用的是Xcode7.1新建一个工程,工程名自己定义,我这里使用的swiftAndOCProjectDemo界面如下:

2、新建一个swift文件:

3、接下来Xcode会提示是否创建桥接文件,这个桥接文件是实现两个语言相互调用的中间桥梁,这一步点击:Create Bridging Header:

时工程的文件是这样的:

4、查看并配置工程引用的头文件,只要保证桥接文件是:XXX-Bridging-Header ,OC Generated Interface Header的值是:$(SWIFT_MODULE_NAME)-Swift.h也就是:项目名-Swift.h:

5、Use this file to import your target's public headers that you would like to expose to Swift.正如文件中的头文件所说,将使用的类库导入到桥接文件中,就可以在swift文件中使用这些类库了。其他第三方类库也是一样的。这是简单使用图形类库UIKit:

6、着手编写代码,因为所有的代码都在一个swift文件中,在项目中给swift文件命名变得很重要,好的命名,会在以后的项目迭代中获益;这里写了一个简单的view,查看效果:

下面是代码:

class swiftTestController: UIViewController {
    
    override func viewDidLoad() {
        let testView = UIView();
        testView.frame = CGRectMake(100, 100, 200, 60)
        testView.backgroundColor = UIColor.redColor()
        testView.layer.borderColor = UIColor.yellowColor().CGColor
        testView.layer.borderWidth = 1.0
        self.view.addSubview(testView)
    }
    
}
7、实现Objective-C调用,注意这是在oc类中引用的头文件是项目名-Swift.h,别引用错了。为什么引用一个这头文件就能够代用swfit文件中的类:在我们进行编译的过程中,Xcode会帮助我们在生成一个项目名-Swift.h的一个文件,用于两种语言之间相互调用,这个文件位置也是存在的,大家可以自行去找。

文件的内容如下:

这时我们测试刚才创建的类swiftTestController能否使用,在Appdelegate中使用这个类:

点击run按钮,在真机上看看是否可行,下面是运行效果,在屏幕中画了一个矩形,矩形内部填充红色,边框是黄色:

很显然,我们用swift写的类在oc中成功的调用了。

8、swift调用OC类

我们习惯了使用oc写的第三方类库,一时还没有swift版本的。

自定义了一个按钮。

viewController中使用:

接着在swiftAndOCProjectDemo-Bridging-Header.h文件中导入customView:

swiftTest文件中使用customView:

运行后,效果如图:

很显然能够运行。

到这里,整个过程就演示完了,大家可以根据自己的情况,选择这种方式,慢慢想swift项目去过渡。苹果来势汹汹的推出swift,swift一定会成为主流开发语言,有过oc开发经验的开发者,也要着手使用swift了。

源代码:swiftAndOCProjectDemo.zip

gitHub地址:swiftAndOCProjectDemo


展开阅读全文

没有更多推荐了,返回首页