gpt4 book ai didi

objective-c - 从 Objective-C 类调用 Swift 函数

转载 作者:IT老高 更新时间:2023-10-28 11:26:25 25 4
gpt4 key购买 nike

我有一个旧的 Objective-C 项目,我想调用新的 Swift 函数和对象,我创建了文件“<ProjectName>-Bridging-Header.h”和“<ProjectName>-Swift.h

将函数从 Swift 调用到 Objective-C 对我来说很容易,但我有一个反向问题。

所以我创建了一个简单的类“System.Swift”

import Foundation

@objc class System : NSObject {

@objc func printSome() {
println("Print line System");
}

}

现在我尝试遵循文档 here<...>-Swift.h 内我已经写了这个文件

@class System;

@interface System : NSObject

-(void)printSome;

@end

我已经将它导入到我的 Objective-C 类中。此时,在我的 Objective-C 代码的 Objective C 类(当前为 UIViewController)中,我尝试调用“printSome”方法:

- (void)viewDidLoad
{
[super viewDidLoad];
System * sis = [[System alloc] init];
[sis printSome];
//any additional setup after loading the view from its nib.
}

现在我有以下错误:

Undefined symbols for architecture i386: "OBJC_CLASS$_System",referenced from:objc-class-ref in "ObjectiveC_Class_That_Call_Swift_Object".o ld: symbol(s) not found for architecture i386 clang: error: linkercommand failed with exit code 1 (use -v to see invocation)

最佳答案

问题已解决,我之前创建并包含了一个新的 .h我的 Objective-C 类中名为 <ProductModuleName>-Swift.h 的文件但是,正如我后来发现的那样,这一步不是必需的,因为编译器会创建必要的不可见文件。

只需包含 <ProductModuleName>-Swift.h在你的类里面,它应该可以工作。

关于objective-c - 从 Objective-C 类调用 Swift 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24078043/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com