ios - 从协议访问 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
对象的引用。如何解决这个问题?为什么会失败?
解决方案
推荐阅读
- javascript - 我的网站在较小的设备上没有响应
- xquery - 使用 MarkLogic Java API 与 QConsole 的通配符搜索无法按预期工作
- tensorflow - 为什么当我使用 numpy 数学时 GradientTape 返回 None
- django - GET Body 没有与 APIClient Django DRF 一起发送
- php - php 在尝试回显时不会从 url 中获取值
- python - 如何重构函数以在列表中仅返回 1 个 True 值?
- x86 - 哈斯韦尔和继任者还能掩盖 A20 线吗?
- hyperledger-sawtooth - 事务提交到sawtooth intkey TP没有响应
- php - 如何让第三个盒子在第一个盒子下面而不是在中间?
- vb.net - For F 处预期的表达式