分段错误:11 – 交叉引用模块
我试图通过交叉引用模块来解决分段错误。 不知道如何做这个工作。 部分错误如下:
1. While reading from /Users/damiandudycz/Library/Developer/Xcode/DerivedData/Hypno-azmcjycezcoqnfauqcbgimvipjyj/Build/Intermediates/Hypno.build/Debug-iphonesimulator/Hypno.build/Objects-normal/x86_64/WorldObjectBasedAugmentedRealityObject~partial.swiftmodule 2. While deserializing 'WorldObjectBasedAugmentedRealityObject' (ClassDecl #12) 3. While deserializing decl #31 (XREF) 4. Cross-reference to module 'AugmentedReality' ... AugmentedRealityView ... in an extension in module 'AugmentedReality' ... Object 5. While loading members for 'AugmentedRealityView' at <invalid loc> 6. While deserializing 'init' (ConstructorDecl #5) 7. While deserializing decl #33 (XREF) 8. Cross-reference to module 'UIKit' ... UIView ... init ... with type (UIView.Type) -> (CGRect) -> UIView
当我从其他模块的某个子类inheritance一个类时,会发生问题。 而其他模块中的这个类inheritance自UIView。 我准备了一个“空白”的项目版本 – 我删除了大部分的文件和定义,只剩下空的类和模块。 有人可以帮我吗? 问题显示在类GoogleARObject – 当这个类被删除或评论它编译。
项目为空类: https : //dl.dropboxusercontent.com/u/40968624/Hypno.zip
更新:
在深入了解这个问题之后,我发现我的答案是错误的。
你的代码应该很好的编译,因为你不是inheritanceAugmentedRealityView
而是嵌套类。
实际的问题看起来像一个编译器错误给我。
您可以通过更改Swift Compiler
– Optimization Level
to Fast, Whole Module Optimization
而不是None
来解决问题:
原始答案:
您试图从类的外部inheritance类( AugmentedRealityView
),但它被标记为public
和final
:
public final class AugmentedRealityView: UIView { } open class WorldObjectBasedAugmentedRealityObject: AugmentedRealityView { }
final
禁止从这个类一般inheritance。
public
允许在模块内部定义类(在Swift3中)。
要创build一个类的子类,可以从模块外部定义,使用open
(Swift3中的new):
open class AugmentedRealityView: UIView { } open class WorldObjectBasedAugmentedRealityObject: AugmentedRealityView { }
要了解更多信息,请阅读
您可以通过在类定义(final类)中的class关键字之前写入final修饰符来将整个类标记为final。 任何对最终类进行子类化的尝试都会报告为编译时错误。
…
开放获取只适用于class级和class级成员,它与公共访问的区别如下:
具有公共访问权限的类别或任何更具限制性的访问权限级别只能在其定义的模块中进行分类。
具有公共访问权限或具有更多限制性访问级别的类成员只能在其定义的模块内被子类覆盖。
开放类可以被定义在它们定义的模块中,也可以定义在任何导入模块的模块中。
打开的类成员可以被它们定义的模块中的子类覆盖,也可以在任何导入定义模块的模块中覆盖。
我知道这个问题是旧的,但我只是遇到了同样的错误:
Segmentation fault: 11 - Cross-reference to module
在我的情况下,解决scheme是禁用Use Legacy Swift Language Version
(当然,如果它可能为您的项目)。
当您同时引用同一个Framework的两个不同版本时会发生此错误。 当你的代码使用不同于Swift版本的Swift版本时,可能会出现这种情况。
尝试使用与Google AR使用的版本相同的Swift版本。