全部
Xcode 10.3和Swift 5.0
我有一个复杂的项目,有3个目标(“Name”、“Name Test”和“Name Local”)
我已经设置了Swift和Objective-C之间的所有互操作性头文件,包括Name-Bridging-Header.h、Objc预处理器宏,以便有选择地导入Name-Swift.hName_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"
知道少了什么吗?

最佳答案

经过一些测试,我发现我需要将Name-Swift.h文件导入到要声明对象的.h文件中。
我的项目定义了#import Name-Swift.h中的Name-Prefix.pch

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

pch文件中的导入声明允许Swift类可以访问Objective-C类的.m文件中的任何位置,但不能访问.h
我不确定这是否是预期的行为。。。我将深入研究文档。

07-24 09:47
查看更多