首页 > 解决方案 > 从协议访问 var 时的 EXC_BAD_ACCESS

问题描述

我有一个protocol定义 aproperty和一个class实现 this的 a protocol。当我尝试从定义为此类的变量中获取此属性时,它可以正常工作,但是当我尝试从定义为此协议的变量中获取它时,出现以下错误。

EXC_BAD_ACCESS(代码=1,地址=0x10)

internal protocol AugmentedRealityViewDisplayingOnSceneKit where Self: AugmentedRealityView {
    var currentCameraPosition: SCNVector3 { get }    
}

open class AugmentedRealityViewARKit: AugmentedRealityView {
}
extension AugmentedRealityViewARKit: AugmentedRealityViewDisplayingOnSceneKit {

    var currentCameraPosition: SCNVector3 {
        return sceneView.pointOfView?.position ?? .zero
    }
}

现在这失败了:

let arView = augmentedRealityView as! AugmentedRealityViewDisplayingOnSceneKit
var cameraPositionAtNodeLevel = arView.currentCameraPosition

虽然这很好用:

let arView = augmentedRealityView as! AugmentedRealityViewARKit
var cameraPositionAtNodeLevel = arView.currentCameraPosition

augmentedRealityView是对AugmentedRealityView对象的引用。如何解决这个问题?为什么会失败?

标签: iosswiftscenekitarkit

解决方案


推荐阅读