我最近一直在努力将Swift添加到一个现有的项目中,以便在现实世界中进行尝试。
在向项目中添加Swift源文件时,我对获得“桥接头”没有任何问题,也就是说,Objective-C到Swift。
但是*-Swift.h头文件应该公开Swift类,无论是标记为@objc的类还是ObjC类的子类,都找不到:-(
在我的主应用程序代码(仍然是Objective-C)中,我没有看到任何关于如何使用我的新子类的具体说明,用Swift编写。
我是首席开发人员的应用程序有一个相当大的代码库(70.000行),所以一次性过渡它是不可能的。
只是提醒那些在项目名称中使用“。”的人。对于Swift版本的桥接头文件,Xcode将用下划线“_”替换“。”。奇怪的是,生成的Bridging-Header.h不会用下划线替换句点。
例如,一个名为My的项目。项目将具有以下桥接头文件名。
Bridging-Header.h(自动生成)
My.Project-Bridging-Header.h
Swift.h
My_Project.h
我希望这能帮助那些像我一样用了大姨妈却被困住的人。该文件可以在以下位置找到。
麦金塔HD / \用户/用户/ Library /开发商Xcode DerivedData /我。Project-fntdulwpbhbbzdbyrkhanemcrfil /构建/ Intermediates构建Debug-iphonesimulator /我的项目。项目构建- DerivedSources。
当心
Jon
项目中不创建实际文件([ProductModuleName]-Swift.h)。Cmd +单击导入,要么实时生成(并在内存中),这样你就可以看到链接是如何完成的,要么在Xcode缓存目录中打开一个文件,但它不在项目目录中。
你需要将定义模块项目道具(在目标的构建设置中)设置为Yes,如果你的模块名中有空格或破折号,在[ProductModuleName]- swift .h文件的所有导入中使用_。
你可以在所有使用swift类型的.h和.m文件中导入它,也可以在.pch文件中导入它。
所以如果我的模块(项目)被命名为“测试项目”,我将像这样导入它,在我的项目的。pch文件中(就在那里):
#import "Test_Project-Swift.h"