即使接口生成器是一个MyClass,我得到一个错误时启动应用程序。
当MyClass是库的一部分时,就会发生这种情况,如果直接在应用程序目标中编译该类则不会发生这种情况。
即使接口生成器是一个MyClass,我得到一个错误时启动应用程序。
当MyClass是库的一部分时,就会发生这种情况,如果直接在应用程序目标中编译该类则不会发生这种情况。
当前回答
在我的情况下,类不能被找到,因为它是一个类定义在一个框架内的扩展,如下所示:
extension Buttons {
public class MyButton: UIButton {
// ...
}
}
当我从扩展中提取类时,Storyboard最终可以找到类(MyFrameworkButton):
extension Buttons {
public typealias MyButton = MyFrameworkButton
}
public class MyFrameworkButton: UIButton {
// ...
}
其他回答
我通过从我的class.h和.m复制文本来修复这个问题,从项目中删除这些类文件,并使用“添加文件”创建新的class.h和.m文件。然后我将代码粘贴回新文件中,一切都运行良好。由于某种原因,文件在创建时没有正确链接。在那之后,我不需要使用任何链接标志。
在我的例子中,我使用了来自另一个项目的故事板。在看了故事板文件xml之后(例如在TextWrangler中),我注意到一个控制器的“customModule”xml属性值是错误的(它仍然引用旧的项目)。手动更改可以解决这个问题。
在我的例子中,我有XCode6,指定的类.m文件最终在构建阶段的错误位置-它应该在编译源下,但最终在
这与Interface Builder没有任何关系,这里发生的是符号没有被Xcode从静态库中加载。要解决这个问题,你需要将-all_load -ObjC标记添加到项目(可能是目标)构建设置的其他链接器标记键。
由于Objective-C每个类只生成一个符号,我们必须通过使用-ObjC标志强制链接器加载类的成员,我们还必须通过添加-all_load链接器标志强制包含静态库中的所有对象。如果你跳过这些标志,你迟早会遇到无法识别的选择器错误,或者得到其他异常,就像你在这里观察到的一样。
在我的例子中,自定义UIView类是在一个嵌入式框架中。我将自定义的UIView头文件“project”改为“public”,并将其包含在主头文件中。