1、新建一個object-c 工程test,創(chuàng)建一個Person.swift類
創(chuàng)建后自動提示:

0ac9eab35bf3482ea8098308002ff698.png
點擊Don't Create,忽略創(chuàng)建橋接頭文件。因為oc調(diào)用swift,不需要導(dǎo)入頭文件(swift只有.m實現(xiàn)文件)。此時oc和swift的混編,OC會通過一個特殊的宏來訪問swift的,具體swift的訪問是通過一個如下的頭文件:

d90c709473d04cfa9bf68dcf8c721bbe.png
默認(rèn)名稱可以改,我們改為Swith.h
2、導(dǎo)入swift的模塊宏文件

e1989596ee0a462c8fa6550434f41d9e.png
3、編寫swift暴漏給object-c

223bd2a73f7e4ad0a5abb16fa38b2114.png
tips:不繼承NSObject的純swift類不能被 oc所訪問、只有被@objc修飾的方法和屬性對于OC才是可見的且屬性和方法也要用public修飾(用@objcMembers直接修飾在class前面,系統(tǒng)會自自動給class對象的屬性、方法前面添加@objec來表明它們是可以被OC訪問的。)
4、OC調(diào)用swift

f937f87b074a62b5369478b28f6f0009.png
我后面又動態(tài)地加了個label為了讓OC訪問并顯示Person.swift的name屬性
//
// ViewController.m
// test
//
// Created on 2022/9/12.
//
#import "ViewController.h"
#import <Swift.h>
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
Person *p =[[Person alloc]init];
[p test];
UILabel *label = [[ UILabel alloc] init];
label.text = [p name];
label.frame = CGRectMake(0,0,100,100) ;
label.backgroundColor = [UIColor redColor];
[self.view addSubview:label];
}
demo下載地址:鏈接: https://pan.baidu.com/s/1MfLKj0ovU3qC7kGhhz8fwg?pwd=skv1 提取碼: skv1
————————————————
版權(quán)聲明:本文為CSDN博主「懷璧其罪」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/xgocn/article/details/126820012