##一、概要
首先看`《The Swift Programming Language》`中提到`“Swift’s compatibility with Objective-C lets you create a project that contains files written in either language. ”`,意思是在一个项目中可以混合使用Swift和Objective-C,你可能有疑问了:
1、如何让两种语言在一个项目中使用?
2、混编的项目是“Swift项目”还是“OC项目”?
3、混编过程中,需要注意哪些细节?
仅凭看文档可能会感觉没有头绪,所以还是实际动手试一试吧。
##二、混编
1、OC项目中混编
(1)首先创建一个项目,命名TestOC,语言选择Objective-C
(2)创建好项目后,在项目中添加一个新文件 New File -> Cocoa Class 语言选择Swift,命名为FileTest,选择Create的时候,会弹出如下页面:

图1. 创建FileTest.swift
选择Yes,然后Xcode不仅创建了 FileTest.swift 文件,还创建了 TestOC-Bridging-Header.h 文件

图2. 创建TestOC-Bridging-Header.h
这个文件什么作用,看文档:

图3. ProName-Bridging-Header 桥接作用
向一个OC项目中添加Swift文件或者向一个Swift项目中添加OC文件,Xcode会自动生成ProName-Bridging-Header.h,作用就是告诉OC项目或Swift项目,这个Swift文件或者OC文件对外提供的内容,从命名“Bridging”也能大概猜到文件的用意。
选择直接编译会报错,不要着急,修改刚创建的文件 FileTest.swift 中的代码:
~~~~{ruby}
import Foundation
@objc(FileTest)
class FileTest: NSObject {
@objc(initWithData:)
init (data: String) {
println(data)
}
}
~~~~
这里看到了 @objc()这种奇怪到写法,官网是这样描述的,意思是用 @objc()想让一个Swift类被OC调用

图4. @objc()写法
选择Swift文件中的类也定义好了,但发现在OC没办法调用,因为OC选择找不到 FileTest 类,这就需要配置一个参数:Build Setting -> Product Module Name,默认是没有配置的,Target -> Build Setting ->Defines Module修改成Yes:

图5. Product Module Name设置
选择在需要使用Swift文件类的地方引入头文件:#import "MyTest-Swift.h",然后在看效果:

图6. #import "MyTest-Swift.h"
Swift中定义的类,可以在OC中使用了,MyTest-Swift.h 文件是什么?他是Xcode自动创建的,点击进去看看里边有什么:

图7. MyTest-Swift.h
原文链接地址:
http://www.itkeyword.com/doc/1037733855125877x185/java
一、概要
首先看《The Swift Programming Language》中提到“Swift’s compatibility with Objective-C lets you create a project that contains files written in either language. ”,意思是在一个项目中可以混合使用Swift和Objective-C,你可能有疑问了:
1、如何让两种语言在一个项目中使用?
2、混编的项目是“Swift项目”还是“OC项目”?
3、混编过程中,需要注意哪些细节?
仅凭看文档可能会感觉没有头绪,所以还是实际动手试一试吧。
二、混编
1、OC项目中混编
(1)首先创建一个项目,命名TestOC,语言选择Objective-C
(2)创建好项目后,在项目中添加一个新文件 New File -> Cocoa Class 语言选择Swift,命名为FileTest,选择Create的时候,会弹出如下页面:

图1. 创建FileTest.swift
选择Yes,然后Xcode不仅创建了 FileTest.swift 文件,还创建了 TestOC-Bridging-Header.h 文件

图2. 创建TestOC-Bridging-Header.h
这个文件什么作用,看文档:

图3. ProName-Bridging-Header 桥接作用
向一个OC项目中添加Swift文件或者向一个Swift项目中添加OC文件,Xcode会自动生成ProName-Bridging-Header.h,作用就是告诉OC项目或Swift项目,这个Swift文件或者OC文件对外提供的内容,从命名“Bridging”也能大概猜到文件的用意。
选择直接编译会报错,不要着急,修改刚创建的文件 FileTest.swift 中的代码:
import Foundation
@objc(FileTest)
class FileTest: NSObject {
@objc(initWithData:)
init (data: String) {
println(data)
}
}
这里看到了 @objc()这种奇怪到写法,官网是这样描述的,意思是用 @objc()想让一个Swift类被OC调用
图4. @objc()写法
选择Swift文件中的类也定义好了,但发现在OC没办法调用,因为OC选择找不到 FileTest 类,这就需要配置一个参数:Build Setting -> Product Module Name,默认是没有配置的,Target -> Build Setting ->Defines Module修改成Yes:

图5. Product Module Name设置
选择在需要使用Swift文件类的地方引入头文件:#import "MyTest-Swift.h",然后在看效果:

图6. #import "MyTest-Swift.h"
Swift中定义的类,可以在OC中使用了,MyTest-Swift.h 文件是什么?他是Xcode自动创建的,点击进去看看里边有什么:

图7. MyTest-Swift.h
原文链接地址:
http://www.itkeyword.com/doc/1037733855125877x185/java