代码之家  ›  专栏  ›  技术社区  ›  Vineesh TP

线程1:exc_bad_access(代码=1,地址=0x20)when subview

  •  1
  • Vineesh TP  · 技术社区  · 7 年前

    我犯了个奇怪的错误。 Thread 1: EXC_BAD_ACCESS (code=1, address=0x20) 当视图子视图位于另一个视图上时。

    两个V iew object not nil.

    我该如何解决这个问题。

    编辑: 我正在用voip实现一个视频聊天代码。

    当接到来电时,在接电话后。我需要显示一个屏幕。 此屏幕显示Fine和其他uiElements按钮等。(包括按钮功能)一切都按预期工作音频通话。

    但是,在视频通话后收到远程用户的视频,我正在试图子视图到一个视图。我可以查看一下远程用户屏幕。突然崩溃(线程1:exc_bad_access(代码=1,地址=0x20))。

    func session(_ session: QBRTCBaseSession, receivedRemoteVideoTrack videoTrack: QBRTCVideoTrack, fromUser userID: NSNumber) {
    
      if (session as! QBRTCSession).id == self.session?.id {
    
          let remoteView :QBRTCRemoteVideoView = QBRTCRemoteVideoView()
          remoteView.videoGravity = AVLayerVideoGravity.resizeAspect.rawValue
          remoteView.clipsToBounds = true
          remoteView.setVideoTrack(videoTrack)
          remoteView.tag = userID.intValue
    
          var frame = self.mainVideoView.bounds
          frame.origin.y = 0
          remoteView.frame = frame
    
          self.view.addSubview(remoteView)
         }
    }
    

    在哪里? receivedRemoteVideoTrack 函数是远程视频的委托方法。

    enter image description here

    enter image description here

    1 回复  |  直到 7 年前
        1
  •  1
  •   Andrey Ivanov    7 年前

    记住 Metal 仅适用于 A7 处理器或更高版本。我建议你用武力 OpenGLES 绘图而不是 金属 ,现在,请执行以下操作:

    QBRTCRemoteVideoView.preferMetal = NO