我正在制作一个框架,该框架具有一个扩展 UIView 以在 iOS 应用程序中使用的类。如果我只是使用故事板将视图放在屏幕上,那么这不足以强制链接器将我的类包含在应用程序中,所以我得到
Unknown class MyClassName in Interface Builder file.
在应用程序中,我可以通过多种方式强制链接,但我想知道在我的 .framework 中是否可以做一些事情来强制应用程序链接到特定的类。
我尝试了一个我会在 C 中做的技巧,但它不是合法的 Objective-C。在我看来,在 .h 中,我尝试创建一个静态 Class 全局变量,就像这样
静态类 myClassInit = [MyClass 类];
这样,当应用程序包含我的 .h 时,此代码会将用法放在其编译单元中,希望强制链接。不幸的是,这不能编译,因为在编译时需要知道静态——我明白了:
Initializer 元素不是编译时常量
关于我可以对框架项目做些什么来强制应用程序链接到我的类,只需在情节提要中使用它并包括 .h,还有什么其他想法吗?
例如,还有其他问题的答案是向应用程序添加链接器标志或让应用程序调用[MyClass class]
。我想要一个不会强迫应用程序制造商做任何超出正常使用类的任何事情的解决方案。
例如,是否有预处理器指令或其他 Objective-C 方式来强制链接?
以防万一您不知道这一点:拥有一个插座甚至设置视图的属性都不足以将其链接起来。