[IOSS]Swift与OC混编
2015-11-03 17:52
369 查看
[IOSS]Swift与OC混编
Demo:http://download.csdn.net/detail/u012881779/9237839
1.用Swift或Object-c创建一个工程(DMTestDemo)并拖入一个第三方工具(ASIHTTPRequest)
适配过后工程结构大概下面这样:
2.基于NSObject创建一个桥接文件(DMTest-Bridging-Header.h)
命名规则:工程名-Bridging-Header.h(也可以按照自己意愿命名)
3.在Build Settings中找到 Bridging Header并双击添加内容:$(SRCROOT)/工程名/工程名-Bridging-Header.h
例如:$(SRCROOT)/DMTestDemo/DMTest-Bridging-Header.h
4.在Swift中调用OC需要在桥接文件(DMTest_Bridging_Header.h)中添加需要在.swift中调用的.h文件
若只需要在OC中调用Swift,则在桥接文件不需要做任何处理
在Swift中调用OC:
在OC中调用Swift:
系统默认给我们生成了头文件(需要Swift类是NSObject的直接或者间接子类)
调用规则:
工程名-Swift.h (从步骤3的图可以看见 Objective-C Generated Interface Header Name)
Demo:http://download.csdn.net/detail/u012881779/9237839
1.用Swift或Object-c创建一个工程(DMTestDemo)并拖入一个第三方工具(ASIHTTPRequest)
适配过后工程结构大概下面这样:
2.基于NSObject创建一个桥接文件(DMTest-Bridging-Header.h)
命名规则:工程名-Bridging-Header.h(也可以按照自己意愿命名)
3.在Build Settings中找到 Bridging Header并双击添加内容:$(SRCROOT)/工程名/工程名-Bridging-Header.h
例如:$(SRCROOT)/DMTestDemo/DMTest-Bridging-Header.h
4.在Swift中调用OC需要在桥接文件(DMTest_Bridging_Header.h)中添加需要在.swift中调用的.h文件
若只需要在OC中调用Swift,则在桥接文件不需要做任何处理
#import <Foundation/Foundation.h> #import "ASIhttpRequest.h" @interface DMTest_Bridging_Header : NSObject @end5.完成上面的操作,就可以进行Swift与OC混编了
在Swift中调用OC:
import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() //接口 let portStr = "https://www.baidu.com" //链接中包含中文时 //portStr = portStr.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)! let url = NSURL(string:portStr) let request = ASIHTTPRequest(URL: url) request.delegate = self request.startAsynchronous() } //请求成功 func requestFinished(request : ASIHTTPRequest){ let data = request.responseData //把NSData对象转换回JSON对象 let json : AnyObject! = try? NSJSONSerialization .JSONObjectWithData(data(), options:NSJSONReadingOptions.AllowFragments) print("request finished"); } //请求失败 func requestFailed(request : ASIHTTPRequest){ print("request failed") } }
在OC中调用Swift:
系统默认给我们生成了头文件(需要Swift类是NSObject的直接或者间接子类)
调用规则:
工程名-Swift.h (从步骤3的图可以看见 Objective-C Generated Interface Header Name)
#import "ASIHTTPRequest.h" #import "DMTestDemo-swift.h" @implementation ASIAutorotatingViewController - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation { ViewController *tempVC = [[ViewController alloc] init]; [tempVC requestFinished:nil]; [tempVC requestFailed:nil]; return YES; } @end
相关文章推荐
- Swift初级(一)
- 浅谈Swift编程中switch与fallthrough语句的使用
- Swift 的访问控制(private,internal,public)
- 详解Swift语言的while循环结构
- Swift语言学习---------高级
- 详解Swift编程中的for循环的编写方法
- iOS swift 语句只能写在函数体内
- 深入理解Swift语言中的闭包机制
- Swift语言中的函数学习教程
- Swift 基础入门 协议/闭包
- swift 快速奔跑的兔几 本节的内容是:闭包儿和操作队列
- Swift编程中数组的使用方法指南
- Swift语言中字符串相关的基本概念解析
- Swift 基础知识Part1
- Swift 基础知识Part2
- iOS swift 通过Url打开自定义的app
- 详解Swift编程中的常量和变量
- Swift 入门基础(结构体/类)
- OC + Swift 混编(二)
- OC + Swift 混编 (一)