gpt4 book ai didi

objective-c - 为什么特定的 Swift 类对 Objective-C 不可见?

转载 作者:行者123 更新时间:2023-11-28 07:20:26 25 4
gpt4 key购买 nike

全部

Xcode 10.3 和 Swift 5.0

我有一个包含 3 个目标(“名称”、“名称测试”和“名称本地”)的复杂项目

我已经设置了 Swift 和 Objective-C 之间的所有互操作性 header ,包括 Name-Bridging-Header.h,用于导入 Name-Swift.h 的 Objc 预处理器宏code>、Name_Test-Swift.hName_Local-Swift.h 选择性

#ifdef TEST
#import "Name_Test-Swift.h"
#elif LOCAL
#import "Name_Local-Swift.h"
#else
#import "Name-Swift.h"
#endif

我导入了几个我经常使用的 Swift 类,一切正常。

现在....

我添加了一个新的 Swift 类。这个新类是 NSObject 的子类

class NewClass: UIView { }

但是在 Objective-C 类中使用新类,Xcode 找不到这个新类,并出现以下错误:

# import "Name-Swift.h" 无法识别。

NewClass *item = [NewClass alloc]; - 未知类型名称“NewClass”

我检查了以下内容:- 新类添加到所有目标,并在 Build-Phases->Compile-Sources 部分进行验证

  • 我的其他 Swift 类没有 public 或 @objc 标识符,一切正常......所以我仍然尝试在新类中使用它们(类定义中的@objc 和 public),没有成功

在任何 Objective-C 类中仅添加 NewClass *item = [NewClass alloc]; 会使 Xcode 停止识别 "Name-Swift.h"

知道缺少什么吗?

最佳答案

经过一些测试,我发现我需要在我要声明我的对象的 .h 文件中导入 Name-Swift.h 文件。

我的项目在Name-Prefix.pch中定义了#import Name-Swift.h

#ifdef TEST
#import "Name_Test-Swift.h"
#elif LOCAL
#import "Name_Local-Swift.h"
#else
#import "Name-Swift.h"
#endif

.pch 文件中的#import 声明允许从我的 Objective-C 类的 .m 文件中的任何地方访问 Swift 类,但不能从 .h 中访问

我不确定这是否是预期的行为...我将深入研究文档。

关于objective-c - 为什么特定的 Swift 类对 Objective-C 不可见?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58359744/

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