#import <Foundation/Foundation.h>
@interface User : NSObject
+(id) sharedUser ;
@end
使用者. m**
#import "User.h"
#import "SwiftInObjectiveC-swift.h"
@implementation User
//Singleton of User
+(id)sharedUser{
static User *sharedUser = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedUser = [[self alloc] init];
//Class Method of ViewController.swift
[ViewController mySwiftClassFunction];
//Instance Method of ViewController.swift
ViewController *vc = [[ViewController alloc] init];
[vc mySwiftFunction];
});
return sharedUser;
}
-(void) myObjcectivecMethod {
ViewController *vc = [[ViewController alloc] init];
[vc mySwiftFunction];
}
1.在. swift类中的类名前面添加@objc。
import UIKit
@objc class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// 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.
}
func mySwiftFunction() {
print("Swift Function")
}
class func mySwiftClassFunction (){
print("Swift Class Function")
}
}
3条答案
按热度按时间nsc4cvqm1#
要在Objective C中使用Swift类,请按照以下步骤操作:
1.创建一个名为User的目标C类。
1.弹出窗口显示"是否要配置Objective-C桥接头"。选择创建桥接头。
1.在. swift类中的类名前面添加
@objc
。1.转到"生成设置"。
1.设置产品模块名称:项目名称
1.集合定义模块:是的
1.设置嵌入内容包含Swift:是的
1.设置安装Objective-C兼容性标头:是的
指令集
1.设置Objective-C桥接标头:SwiftInObjectiveC/SwiftInObjectiveC-Bridging-Header.h
1.将自动生成的标题"ProjectName-swift. h"导入到***. m**文件中。
1.清理并运行项目。
1.它会起作用的!
有关详细信息,请点击Apple的"混搭"链接。
指令集
yx2lnoni2#
在Objective-C中使用Swift类非常简单,只需按照以下步骤操作
默认情况下不打开,请添加桥接头文件)。
ProjectName-Swift.h
,如下所示x1c 0d1xpbpqsu0x3#
向Objective-C项目添加多个Swift文件。
假设您要将 Class1.swift、Class2.swift 和 Class3.swift 文件添加到 SwiftToObjC 项目中
1.将 Class1.swift 文件添加到项目中。
1.在SwiftToObjC-Bridging-Header.h文件中,添加以下行
@类Class 1;
1.当您将 Class2.swift 和 Class3.swift 添加到项目中时,也会将这两个类添加到 SwiftToObjC-Bridging-Header.h 文件中,如下所示。
@类Class 1;
@类Class 2;
@类Class 3;
5.在目标SwiftToObjC中,在 * 构建设置 、Swift-Compiler General 下,您应该看到以下两个设置:
Objective-C桥接标头-〉SwiftToObjC-Bridging-Header.h
Objective-C生成的接口头文件名称-〉SwiftToObjC-Swift. h
6.在目标SwiftToObjC中, 构建设置 * 下的 * 定义模块 * 设置为YES。
1.如果您想访问 MyViewController 中的Class 1,那么在 MyViewController.m 中,您应该导入。
import“快速到对象C桥接-标题.h”
1.在 Class1.swift 文件中,将类声明为“@objc public”,如下所示。相同的@objc public用于Class 2和Class 3。
@objc公共类Class 1:可用视图控制器
注意:UITableViewController仅为示例,用于演示目的。
就这样了