首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >分段故障: 11 -交叉引用模块

分段故障: 11 -交叉引用模块
EN

Stack Overflow用户
提问于 2016-11-16 13:05:57
回答 4查看 3.2K关注 0票数 5

我试图解决一个分段错误与交叉引用的模块。我不知道该怎么做。以下是错误的一部分:

代码语言:javascript
复制
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

当我对来自其他模块的某个子类的子类进行子类分类时,会出现问题。其他模块中的该类继承自UIView。我准备了一个“空”项目版本--我删除了大部分文件和定义,只留下了空类和模块。有人能帮我吗?问题显示在类GoogleARObject -当这个类被删除或注释时,它会编译。

带有空类的项目:https://dl.dropboxusercontent.com/u/40968624/Hypno.zip

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-11-16 13:30:55

更新:

在深入研究这个问题之后,我的回答是错误的。

您的代码应该编译得很好,因为您不是AugmentedRealityView子类,而是一个嵌套类。

在我看来,实际的问题就像一个编译器错误。

您可以通过将Swift Compiler - Optimization Level改为Fast, Whole Module Optimization而不是None来解决这个问题。

原始答案:

您正在尝试从类定义的模块外部继承类(AugmentedRealityView),但它被标记为publicfinal

代码语言:javascript
复制
public final class AugmentedRealityView: UIView {
}

open class WorldObjectBasedAugmentedRealityObject: AugmentedRealityView {
}

final一般禁止从该类继承。

public允许从定义类的模块(在Swift3中)中生成子类。

要使类子类可以从定义在模块中的模块外部获得,请使用open (在Swift3中新建):

代码语言:javascript
复制
open class AugmentedRealityView: UIView {
}

open class WorldObjectBasedAugmentedRealityObject: AugmentedRealityView {
}

要了解更多信息,请阅读

您可以通过在类定义(final class)中的class关键字前面写入最终修饰符,将整个类标记为final。对最终类子类的任何尝试都报告为编译时错误。

..。

开放访问仅适用于类和类成员,它与公共访问的区别如下: 具有公共访问权限的类,或任何更严格的访问级别,只能在定义它们的模块中被子类化。 具有公共访问权限或任何更严格的访问级别的类成员,只能在定义它们的模块中被子类覆盖。 开放类可以在定义它们的模块中被子类化,也可以在导入它们定义的模块的任何模块中被子类。 开放类成员可以被定义它们的模块中的子类以及导入它们定义的模块的任何模块中的子类覆盖。

票数 13
EN

Stack Overflow用户

发布于 2017-09-20 11:08:16

当您同时引用同一框架的两个不同版本时,会发生此错误。当您的代码使用与库使用的不同的Swift版本时,可能会出现这种情况。

尝试使用与Google相同的Swift版本。

票数 3
EN

Stack Overflow用户

发布于 2017-05-12 12:50:28

我知道这个问题很老,但我只是遇到了同样的错误:

代码语言:javascript
复制
Segmentation fault: 11 - Cross-reference to module

在我的例子中,解决方案是禁用Use Legacy Swift Language Version (当然,如果您的项目可能的话)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40632924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档