![[IOSS]Swift与OC混编,第1张 [IOSS]Swift与OC混编,第1张](/aiimages/%5BIOSS%5DSwift%E4%B8%8EOC%E6%B7%B7%E7%BC%96.png)
[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,则在桥接文件不需要做任何处理
#import <Foundation/Foundation.h>#import "ASIhttpRequest.h"@interface DMTest_BrIDging_header : NSObject@end5.完成上面的 *** 作,就可以进行Swift与OC混编了
在Swift中调用OC:
import UIKitclass 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 总结 以上是内存溢出为你收集整理的[IOSS]Swift与OC混编全部内容,希望文章能够帮你解决[IOSS]Swift与OC混编所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)