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

最近项目中使用到了一个图表插件,由于这个图表插件使用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


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值