有一个名为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
个元素不会被解析,也不会显示在界面构建器的视图属性中。