在我的示例项目中,我尝试在Swift文件中使用桥接头文件来使用C-C类和结构体。我在使用结构体时得到一个错误:
在作用域中找不到类型“XXX”
但是,类的使用没有任何错误。
我的xml-c文件看起来像:
#import <Cocoa/Cocoa.h>
struct ObjCStruct {
NSMenu* sMenu;
int8_t menuID;
};
@interface ObjCClass : NSObject {
NSMenu* cMenu;
}
@end
字符串
在我的桥接头中,我将其用作:
#import "ObjC.h"
型
最后,我在Swift文件中使用了struct和classes:
struct Model {
var c : ObjCClass;
var s : ObjCStruct;
}
型
如果NSMenu* sMenu;
已经从ObjC. h中注解掉,那么它可以正常工作。
我如何在Swift文件中使用C2C结构体?
我已经在桥接头文件中导入了C2C-C头文件,并且桥接头文件在构建设置中已被正确引用。
1条答案
按热度按时间5q4ezhmt1#
将struct与对象一起使用对于内存管理来说是非常棘手的。Objective-c中的Struct与Swift中的struct不一样。你可以重新考虑将其声明为一个类。然而,我认为这是一个解决方案:
字符串
在Swift中:
的数据