为什么Interface Builder在静态框架中看不到我的类?

时间:2018-06-23 11:34:39

标签: swift uiview frameworks interface-builder static-libraries

有一个名为MyFramework的Cocoa框架项目,其Mach-O类型设置为Static Library,其特征是MyView.swift并带有以下声明:

open class MyView: UIView { /* ... */ }

同时,另一个名为MyApp的项目与静态框架MyFramework静态链接。另外,Main.storyboard中的MyApp还有一个场景,其中有一个视图,其自定义类设置为MyView,模块设置为MyFramework

每当实例化支持此场景的视图控制器时,该视图就会作为默认的UIView起作用,并且我会在控制台中看到消息:

2018-06-23 18:22:29.114096+0700 MyApp[2318:415810] Unknown class _TtC15MyFramework15MyView in Interface Builder file.

然后,我用以下声明将MyApp添加到MyNewView.swift的目标中:

class MyNewView: MyView {  }

在不更改Main.storyboard中任何内容的情况下,我启动了应用程序,实例化了MyView类,其行为与预期的一样,并且消息未出现。

问题1:为什么会这样?如果未从代码中的任何位置直接导入或引用类型,则该类型是否已剥离或未在Objective-C运行时注册?还是可能以某种方式延迟加载?

问题2:该如何处理,这样我就不必应用此类解决方法了?

更新:我重新启动了Xcode,问题仍然存在,但界面构建器在输入MyFramework时不建议将Module作为模块视图的标识属性中的“字段”,并且@IBInspectable中的MyView个元素不会被解析,也不会显示在界面构建器的视图属性中。

0 个答案:

没有答案