私はVuforia ExtensionでUnity 2017.2.0f3を使用しており、https://github.com/blitzagency/ios-unity5チュートリアルの後に現存するiOSプロジェクトにプロジェクトをインポートしました。現存するiOSプロジェクトには、Vuforiaを使用するARビューと、バーコードをスキャンできるネイティブiOS AVCaptureSessionとの間で切り替えられるビューが含まれていました。 com.apple.avfoundation.videodataoutput.bufferqueue
キュー内AVCaptureSessionを使用したUnity Vuforia Extension EXC_BAD_ACCESS
EXC_BAD_ACCESS
:旧エラーなしで動作しますが、できるだけ早く私はsession.addInput
またはsession.addOutput
後者の特徴がクラッシュをしようとして。 NSZombieを使ってメッセージの送信を試みたオブジェクトの種類について知りたいのですが、実際には物理デバイス上でしかアプリケーションを実行できないため、送信しようとしている実際のオブジェクトについて詳しく知ることができませんクラッシュの原因となるメッセージ
私の推論は、それがVuforiaがAVCaptureOutput
とAVCaptureInput
で新しいAVCaptureSession
の私の創出によってトリガされ解放されVIdeoDataOutputバッファキューへの参照を永続化するとしなければならないかもしれないということです。難しいのは、それが第三者図書館であるため、実際にこれをどうやって確認するかわからないということです。 Objective-Cラッパーを持つ唯一のViewControllerはCameraCapture.mm
と呼ばれますが、NSLogs
またはそのメソッドに入れたブレークポイントは呼び出されないので、これは唯一のユニークなView Controllerであるようです。上記のメソッドが呼び出されると
private func setupCamera() {
guard let device = AVCaptureDevice.defaultDevice(withMediaType: AVMediaTypeVideo),
let input = try? AVCaptureDeviceInput(device: device) else {
return
}
if session.canAddInput(input) {
session.addInputWithNoConnections(input)
}
previewLayer = AVCaptureVideoPreviewLayer(session: session)
previewLayer.frame = self.view.bounds
previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill
view.layer.addSublayer(previewLayer)
cameraPreviewView.layer.addSublayer(previewLayer)
let metadataOutput = AVCaptureMetadataOutput()
if session.canAddOutput(metadataOutput) {
session.addOutputWithNoConnections(metadataOutput)
metadataOutput.setMetadataObjectsDelegate(self, queue: DispatchQueue.main)
metadataOutput.metadataObjectTypes = metadataOutput.availableMetadataObjectTypes
} else {
print("Could not add metadata output")
}
}
は、さえ電撃チュートリアルappDelegate.stopUnity()
からAppDelegate
関数を呼び出した後、必ずアプリがクラッシュします。