Chr*_*ver 123 beta xcode frameworks
我刚刚升级到Xcode 6 Beta 4并且有一个我在Beta 2中为Live Views创建的框架.由于另一个快速的bug,我需要使用一些Obj-C代码.升级时,我收到以下错误:
错误:不支持将桥接头与框架目标一起使用
我没有在发行说明中看到任何内容,也没有找到任何其他迁移路径.还有其他人看过这个并找到了解决方案吗?
我意识到Beta 3消除了对实时视图框架的需求,但在我的情况下,如果我可以让它工作,这是有道理的.我可以删除它作为后备,但如果它们在Beta 4中没有完全破坏,我宁愿使用框架.
Dee*_*kie 212
如错误所述,框架中不允许桥接标头.在从在同一框架内目标导入代码中的部分混合&搭配苹果文档暗示了这一点.正如他们所说,你需要"在你的伞头文件中,导入你想要暴露给Swift的每个Objective-C头".
但是,我发现您可能还需要将这些特定标头公开.这个答案回顾了为什么以及如何做到这一点:Swift编译器错误:"框架模块内部的非模块化头".
所以,这样做:
注意:"伞头文件"是一个文件(名为[ProductName] .h),通常表示框架的所有公共头.它通常只是框架中包含的其他头文件的#import语句列表.在Xcode中,如果你打开UIKit.h,你会看到一个伞文件的好例子.
Jan*_*egg 22
有两种可能性.向伞头文件添加必要的标题并将其公开是一种方法.但是,如果标题应该可供Swift使用,但不公开,则会出现问题.
第二个可能性,这将使内部接头提供给夫特详细描述这里.基本上,需要创建类似于以下的模块映射:
module AwesomeKitPrivate {
header "../InternalClass.h"
export *
}
Run Code Online (Sandbox Code Playgroud)
然后可以使用以下设置将其包含在XCode中:
SWIFT_INCLUDE_PATHS = $(SRCROOT)/AwesomeKit/ProjectModule
Run Code Online (Sandbox Code Playgroud)
Ral*_*ane 11
从同一框架将Objective-C代码导入Swift
在您的伞头文件中,导入要向Swift公开的每个Objective-C头.例如:
#import "XYZ/XYZCustomCell.h"
#import "XYZ/XYZCustomView.h"
#import "XYZ/XYZCustomViewController.h"
将包含的文件公布在其"构建阶段"的框架的"标题"部分中.
清洁和重建.
Swift会在你的伞形标题中看到你公开展示的每个标题.该框架中的Objective-C文件的内容将自动在该框架目标中的任何Swift文件中提供,而不包含任何import语句.使用与系统类相同的Swift语法使用自定义Objective-C代码.
let myOtherCell = XYZCustomCell()
myOtherCell.subtitle = "Another custom cell"
Run Code Online (Sandbox Code Playgroud)
重要提示:"伞头文件"表示文件{ModuleName} .h.顺便说一句,目标名称是{ModuleName} .framework.
| 归档时间: |
|
| 查看次数: |
50219 次 |
| 最近记录: |