我试图在Objective-C文件中使用Swift类。
我在"moduleName-Swift.h"
文件中添加了SuperViewController.m
文件,但当我尝试在SuperViewController.h
中使用Swift-class
作为方法参数声明公共方法时,我显然会收到错误:{{ 1}}
如果我只能在"Expected a type"
个文件中包含swift-class
,如何在头文件中使用projectModule-Swift.h
答案 0 :(得分:16)
确保将@objc放在 swift 类名之前。
@objc myclassname { ... }
同时添加
@class myclassname;
在您要访问swift类的 obj-c头文件中
答案 1 :(得分:2)
我遇到了同样的问题。在obj-c .h文件中添加@class MyClassName创建了“用于类消息的接收者'MyClassName'是一个前向声明”错误,所以我删除了它并且只在swift类名之前添加了“@objc”,但我也有确保swift类是NSObject的子类。
@objc class MySwiftClass:NSObject { ... }
在obj-c .h文件中没有@class MyClassName!
答案 2 :(得分:1)
记住要在源文件中导入项目生成的swift头文件,例如#import <MyProjectName-Swift.h>
答案 3 :(得分:1)
我创建了一个没有子类的类,添加了@objc和@objcmembers无效。
更改之后,:NSObject
整个类对目标C都是可见的
答案 4 :(得分:0)
我不得不使用:
@obj public class MySwiftClass: NSObject { ... }