Objective-C typealias优先于Swift类

时间:2016-11-12 19:08:35

标签: objective-c swift namespaces

将Swift 3与XCode 8.1(8B62)一起使用

我有一个名为Category的类,我在另一个类中引用它:Foo(Category.self)。但是,Swift编译器会出现以下错误:Generic parameter 'T' could not be inferred。检查课程表明,Swift认为我指的是typealias Category - OpaquePointer,它是一些内置的类型。有关此类型的更多信息,请访问:https://developer.apple.com/reference/objectivec/category

据我所知,编译器应该支持当前模块中的符号。我如何向编译器表明我想在我的模块中使用该类?这段代码显然打破了XCode 8B62的最新更新。

2 个答案:

答案 0 :(得分:0)

尝试用你自己的另一个打败这个类型:

MyCategory

现在,只要编译器误解了您的意图,您就可以使用Category而不是类别。当然,只要编译器知道你想要什么,你仍然可以使用abc。另外,我建议在代码中避免使用与Objective-C / Swift关键字过于相似的类型名称。

或者,您可以使用目标名称限定类型名称。例如,如果您的目标(或模块)被称为abc.Category,则使用{{1}}。

答案 1 :(得分:0)

这是project.pbxproj的一个问题。先前的合并冲突缺少一些引用,这些引用使编译器无法识别文件中的符号。我不得不删除对该文件的引用,并再次将其添加为新文件。