gpt4 book ai didi

objective-c - Swift 到 Objective-C header 不包含 Swift 类

转载 作者:IT王子 更新时间:2023-10-29 05:14:57 26 4
gpt4 key购买 nike

我试图在我的 Objective-C 代码中使用 Swift 类,但是我的 Swift 类似乎没有出现在生成的 header 中。结果,我的构建失败并显示“使用未声明的标识符‘HelloWorld’”。

我使用模板创建了一个名为 TestApp 的项目。

我的目标中有以下build设置:

  • 产品名称:TestApp
  • 产品模块名称:TestAppModule
  • 定义模块:是

Apple 的文档说使用 #import <TestApp/TestAppModule-Swift.h>但这不起作用。

相反,我使用的是 #import "TestAppModule-Swift.h"在我的“.m”文件中。好像找到了这个。

我可以导航到它,它看起来像这样......

// Generated by Swift version 1.0 (swift-600.0.34.4.5)

#if defined(__has_include) && __has_include(<swift/objc-prologue.h>)
# include <swift/objc-prologue.h>
#endif

...etc...

但是里面没有定义类。

我在项目中有一个 Swift 文件,看起来像这样......

class HelloWorld {    
func hello() {
println("hello world")
}
}

为什么这不能使用标准头文件位置 #import <TestApp/TestAppModule-Swift.h>

如何在该头文件中获取我的 swift 类,这样我就不会收到“未声明的标识符”错误?

最佳答案

下面是我如何让它发挥作用的。可以看到更大规模的回答here.

改变这个:

class HelloWorld {    
func hello() {
println("hello world")
}
}

收件人:

@objc class HelloWorld { 

class func newInstance() -> HelloWorld {
return HelloWorld()
}

func hello() {
println("hello world")
}
}

然后,在您的 ObjC 文件中:

#import "TestApp-Swift.h"

然后这样调用:

HelloWorld * helloWorld = [HelloWorld newInstance];
[helloWorld hello];

关于objective-c - Swift 到 Objective-C header 不包含 Swift 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24086595/

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