刘勇虎的官方网站
网站内容包含大前端、服务器开发、Python开发、iOS开发、Android开发、网站维护等技术文章。专注于分享技术经验,职业心得体会,IT优秀文章与教程创作。
Stay hungry,Stay foolish,Stay young
可在新建OC文件时,建立桥接头文件,也可以自己新建桥接头文件。
1.创建头文件: HeaderFileForSwiftAndOC.h
2.找到路径: 项目target -> Bulid Settings -> ObjectiveC Bridging Header
3.填写:**$(SWIFT_MODULE_NAME)/HeaderFileForSwiftAndOC.h**
OCClass.h
#import <Foundation/Foundation.h>
@interface OCClass : NSObject
- (void)ocFunction:(NSString *)str;
@end
OCClass.m
#import "OCClass.h"
#import "SwiftAndOC-Swift.h"//新建swift项目时默认创建,包含了所有swift文件引用
@implementation OCClass
- (void)ocFunction:(NSString *)str{
NSLog(@"\noc func par - str = %@",str);
SwiftObj *swiftObj = [[SwiftObj alloc]init];
[swiftObj swiftFuncWithPar:@"OC -> swift"];
}
@end
ViewController.swift
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let ocObj = OCClass();
ocObj.ocFunction("swift -> OC");
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
SwiftObj.swift
import UIKit
class SwiftObj: NSObject {
@objc func swiftFunc(par:String){//@objc 很重要 必须写 不然oc调用时找不到该方法
print("swift func par = \(par)");
}
}
控制器打印
2018-06-20 18:01:19.346937+0800 SwiftAndOC[6803:243390]
oc func par = swift -> OC
swift func par = OC -> swift
(1)启动 xcode -> 创建singleView新项目 -> 命名为: objcASwift
(2)创建 NextViewController.swift 继承于 UIViewController
(3)创建 Demo.swift 继承于 NSObject
注意勾选创建 -Briging-Header.h 文件
(1)导入头文件。编译后导入,否则可能会提示错误;编写时或不会自动提示代码,属正常情况
(2) viewcontroller 页面创建点击事件
- (IBAction)demoTouchAction:(UIButton *)sender {
NextViewController *next = [[NextViewController alloc]init];
//设置next subTitle 属性
next.subTitle = @"subTitle";
// 调用 实例方法
[next sayHello];
// 页面跳转
[self presentViewController:next animated:YES completion:nil];
}
此处应该注意:
适当位置添加 public 和 @objc 关键字,用以向objective-c暴露接口!
import UIKit
class Demo: NSObject {
var name :String?;
// oc项目中swift文件相互调用,并不需要public 和 @objc关键字
func printName() -> Void {
print(self.name)
}
}
1 OC项目中调用Swift文件,关键在于项目头文件 programName-Swift.h 的引入。
2 其次在于连接文件 programName-Bridging-Header.h 的生成。
3 最后在swift文件的对应处添加 public @objc 等关键字,用以将相关方法暴露给objc。
END.