全部
Xcode 10.3和Swift 5.0
我有一个复杂的项目,有3个目标(“Name”、“Name Test”和“Name Local”)
我已经设置了Swift和Objective-C之间的所有互操作性头文件,包括Name-Bridging-Header.h
、Objc预处理器宏,以便有选择地导入Name-Swift.h
、Name_Test-Swift.h
或Name_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
我不确定这是否是预期的行为。。。我将深入研究文档。