我正在创建我自己的框架,我添加了 objective c 文件并且它工作正常,之后我需要在添加 swift 文件后添加一些 swift 文件 xcode 没有给我选择自动 Creating Bridging 然后我关注了Mix and Match approach .我遵循我所理解的一切。
我想将 swift 文件访问到 Objective c,但我收到前向声明错误,所以这是我附加的示例代码,请指导我哪里做错了。
TestObjectCFile.h
#import <Foundation/Foundation.h>
@class TestSwiftFile;
@interface TestObjCFile : NSObject
@end
TestObjectCFile.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
错误发生在 TestObjectCFile.m 下一行。
TestSwiftFile * testSwiftFile = [[TestSwiftFile alloc] init];
最佳答案
终于找到解决方案了。我做了以下更改。下面是您的框架中的待办事项列表。
Swift 类在 Objective C 类中的使用
- 在 Swift 类名前使用 Open 关键字
- 在 Swift 类的 Open 关键字之前使用 @objc 关键字
- 在 Umbrella 文件中导入 objective-c 类的所有头文件 YourProject.h 那些正在使用 Swift 类。
- 使用
#import <YourProjectName/YourProjectName-Swift.h>
在目标 c
我遵循了 Apple 的混合搭配方法。
注意:有时 <YourProjectName/YourProjectName-Swift.h>
文件不能导入到标题中,只能导入到 .m
中文件。仅供引用,此文件由编译器自动创建。如果您在项目中搜索它,您将无法找到它,但是如果您在目标中的文件中 ⌘ 单击它(作为代码中导入的文件),Xcode 将(应该)打开它并向您展示 Swift 类的所有 Objective-C 类接口(interface)。要查看 Swift -> Objective-C 模块 header 的名称,请转到目标的build设置并搜索 $(SWIFT_MODULE_NAME)-Swift.h
。或者简单地 -Swift
.
关于ios - Getting Error Receiver for class message 是前向声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41800808/