ViewController.swift
import UIKit
func oc_u_swift(){}
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.swift_OC();
}
//Swift 調用OC
func swift_OC(){
let oc = OCClass()
let i = oc.ocFunc()
}
func oc_u_swift(){
let oc = OCClass()
oc.oc_use_swift()
}
}
OCClass.h
#import <Foundation/Foundation.h>
@interface OCClass : NSObject
-(int)ocFunc;
-(void)oc_use_swift;
@end
OCClass.m
#import "OCClass.h"
#import "Swift_OC_C混編-swift.h"
@implementation OCClass
-(instancetype)init{
if (self = [super init]) {
}
return self;
}
/**
swift 調用 OC 的函數
1、只要在橋接頭文件 xxxx-Bridging-Header.h #import OC的頭文件可以
*/
-(int)ocFunc
{
int (^p)(int, int);
//把函數賦值給block
p = ^(int a, int b){
return a + b;
};
//使用
int result = p(10,40);
return result; //result = 50
}
/**
OC 調用 swift
1、#import "Swift_OC_C混編-swift.h" ---> Build Setting - "Product Module Name-swift.h"
2、公開函數 func oc_u_swift(){}
3、橋接頭文件只適合用於 swift調用OC,這裏只要正確引用頭文件就可以
*/
-(void)oc_use_swift
{
ViewController *v = [[ViewController alloc]init];
[v swift_OC];
}
GitHub地址:https://github.com/JasonChen02/Swift-OC_varandra https://github.com/JasonChen02/Swift-OC_varandra (第一次上傳到github,相互學習)