获取类消息的错误接收器是一个前向声明

2024-04-05

我正在努力创建自己的框架,我添加了目标c文件并且它工作正常,之后我需要在添加swift文件后添加一些swift文件 xcode没有给我auto选项创建桥接然后我跟着混合搭配方法 https://developer.apple.com/library/content/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html#//apple_ref/doc/uid/TP40014216-CH10-ID122。我遵循了我认为我理解的一切。

我想将 swift 文件访问到 Objective c 中,但我遇到了前向声明错误,所以这是我附加的示例代码,请指导我哪里做错了。

测试对象CFile.h

#import <Foundation/Foundation.h>
@class TestSwiftFile;
@interface TestObjCFile : NSObject


@end

测试对象CFile.m

#import "TestObjCFile.h"
#import <TestFrameworkTry/TestFrameworkTry-Swift.h>
#import "TestFrameworkTry.h"


@implementation TestObjCFile

- (void)TestMethodForImportingSwiftFile
{

    TestSwiftFile * testSwiftFile = [[TestSwiftFile alloc] init];
//    TestSwiftFile * testSwiftFile = [self returnSwiftClassInstance];
    NSLog(@"%@",testSwiftFile);
}
@end

TestSwiftFile.swift

import Foundation

并且错误发生在测试对象CFile.m以下行。

TestSwiftFile * testSwiftFile = [[TestSwiftFile alloc] init];

as show attached picture. enter image description here


最后我得到了解决方案。我做了以下更改。下面是您框架中的待办事项列表。

Objective C 类中的 Swift 类用法

  • 在 Swift 中的类名之前使用 Open 关键字
  • 在 Swift 类的 Open 关键字之前使用 @objc 关键字
  • 导入 Umbrella 文件中 Objective C 类的所有标头 YourProject.h 那些正在使用 Swift 类。
  • Use #import <YourProjectName/YourProjectName-Swift.h>在目标 C

我遵循了苹果公司的 Mix and Match 方法。

Note: 有时<YourProjectName/YourProjectName-Swift.h>文件不能导入到标头中,只能导入到.m文件。仅供参考,该文件是由编译器自动创建的。如果您在项目中搜索它,您将无法找到它,但如果您在目标文件中 ⌘ 单击它(作为代码中导入的文件),Xcode 将(应该)打开它并向您展示 Swift 类的所有 Objective-C 类接口。要查看 Swift -> Objective-C 模块头的名称,请转到目标的构建设置并搜索$(SWIFT_MODULE_NAME)-Swift.h或者简单地-Swift.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获取类消息的错误接收器是一个前向声明 的相关文章

随机推荐