gpt4 book ai didi

objective-c - 在 Swift 中使用 obj-c typedef

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

我有一个 typedef:

typedef NSString VMVideoCategoryType;

extern VMVideoCategoryType *const VMVideoCategoryType_MusicVideo;
extern VMVideoCategoryType *const VMVideoCategoryType_Audio;
extern VMVideoCategoryType *const VMVideoCategoryType_Performance;
extern VMVideoCategoryType *const VMVideoCategoryType_Lyric;
extern VMVideoCategoryType *const VMVideoCategoryType_Show;

我已将此文件包含在桥接 header 中。但是,当我尝试访问 Swift 文件中的 VMVideoCategoryType 时出现错误:

使用未声明的类型“VMVideoCategoryType”

有什么方法可以让它工作,还是我必须在 Swift 中完全重新定义这种类型?

最佳答案

我有点猜测,但原因似乎是 Objective-C像 NSString 这样的对象不能静态分配(参见例如 Are objects in Objective-C ever created on the stack? )。如果

typedef NSString VMVideoCategoryType;

被导入 Swift 然后你可以声明一个局部变量

var foo : VMVideoCategoryType

这将是一个 NSString不是一个指向 NSString 的指针。

另请注意,您在 Swift 中看到的 NSString 对应于 NSString *在 Objective-C 中。

如果您将 VMVideoCategoryType 定义为 NSString * 的类型定义然后它在 Swift 中可见:

typedef NSString * VMVideoCategoryType;

extern VMVideoCategoryType const VMVideoCategoryType_MusicVideo;
// ...

关于objective-c - 在 Swift 中使用 obj-c typedef,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31125549/

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