Swift/Objective-C-Swift与Objective-C混用教程
2016-03-23 14:26
483 查看
简介:我想很多iOS开发者在知道Swift后,心中最大的问题就是如何将Swift应用到原有项目之中。下面我将简要介绍这2种语言的混用方法,内容参考自官方文档 Using Swift with Cocoa and Objective-C ,推荐大家阅读。
这个自动创建出来的Bridging-Header.h文件是沟通Swift世界和Objective-C世界的桥梁。任何需要在Swift文件中使用的自定义Objective-C类,必需先引入此Header文件。
假设项目名称为
想在Swift中引用这个类,首先需要在
然后在Swift代码中就能使用Note了:
假设存在Book类(在
在需要引用Book类的Objective-C文件中,先引入
然后就能使用Book了:
最后再啰嗦一句,
在Swift中使用Objective-C类
在Xcode6中新建文件(⌘+N),选择Swift,然后系统框提示是否同时创建XXX-Bridging-Header.h文件(XXX为你的项目名称),确定。这个自动创建出来的Bridging-Header.h文件是沟通Swift世界和Objective-C世界的桥梁。任何需要在Swift文件中使用的自定义Objective-C类,必需先引入此Header文件。
假设项目名称为
TestSwift,其中存在Objective-C类Note(在
Note.m中定义):
@interface Note : NSObject - (void)log; @end
想在Swift中引用这个类,首先需要在
TestSwift-Bridging-Header.h文件中import Note:
#import "Note.h"
然后在Swift代码中就能使用Note了:
class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() var a:Note = Note() a.log() } }
在Objective-C中使用Swift类
想在Objective-C文件中引用Swift文件中定义的类,需要在Objective-C文件中引入一个特殊的头文件: XXX-Swift.h,假设项目名称为TestSwift,那么这个需要引入的header文件为
TestSwift-Swift.h:
假设存在Book类(在
Book.swift文件中定义):
import Foundation class Book : NSObject { var title:String init() { self.title = "Default Book" } func log() { println(self.title) } }
在需要引用Book类的Objective-C文件中,先引入
TestSwift-Swift.h头文件
#import "TestSwift-Swift.h"
然后就能使用Book了:
Book *book = [Book new]; [book log];
最后再啰嗦一句,
XXX-Swift.h文件在项目中是不可见的(估计此文件在编译时自动生成),在使用时只需遵循苹果既定规则就OK了。
相关文章推荐
- Objective-C和Swift混编的一些经验
- <Troubleshooting> libmawt.so: libXext.so.6: cannot open shared object file: No such file or director
- 011_用eclipse打开hadoop1.2.1源码出现The method getSplits(JobConf, int) is undefined for the type Object错误
- JDK源码(一)Object类
- 01 - Pushing a navigation controller is not supported
- objective-C学习笔记(三)数据成员:属性与实例变量
- ORA-38301: cannot perform DDL/DML over objects in Recycle Bin分析
- alembicTool_lsObject
- 利用ObjectAnimator实现侧滑菜单的效果
- Objective-C @encode关键字
- JSONObject put,accumulate,element的区别
- Objective-C 编码规范:禅与 Objective-C 编程艺术
- expression<Func<object,Bool>> 及 Func<oject,bool>用法
- python AttributeError: 'module' object has no attribute 'setdefaultencoding'
- IOS之Objective-C学习 代理设计模式
- 2015 Objective-C 三大新特性 不可错过的iOS开发技巧
- Objective c ,iOS KVC是如何实现的,权威答案
- 《Objective-C 2.0程序设计》第2章练习
- OC中的load和initialize方法
- object-c中NSString与int和float NSDictionary NSString json的相互转换