Skip to content

Commit 11b15fd

Browse files
committed
Fixed Swift runtime failure/crash during unexpected capture() call
'Unexpectedly found nil while implicitly unwrapping an Optional value'
1 parent 11b116c commit 11b15fd

File tree

2 files changed

+9
-6
lines changed

2 files changed

+9
-6
lines changed

example/ios/Podfile.lock

+3-3
Original file line numberDiff line numberDiff line change
@@ -575,7 +575,7 @@ EXTERNAL SOURCES:
575575
SPEC CHECKSUMS:
576576
boost: 57d2868c099736d80fcd648bf211b4431e51a558
577577
CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99
578-
DoubleConversion: 5189b271737e1565bdce30deb4a08d647e3f5f54
578+
DoubleConversion: cde416483dac037923206447da6e1454df403714
579579
FBLazyVector: f637f31eacba90d4fdeff3fa41608b8f361c173b
580580
FBReactNativeSpec: 0d9a4f4de7ab614c49e98c00aedfd3bfbda33d59
581581
Flipper: 26fc4b7382499f1281eb8cb921e5c3ad6de91fe0
@@ -588,7 +588,7 @@ SPEC CHECKSUMS:
588588
Flipper-RSocket: d9d9ade67cbecf6ac10730304bf5607266dd2541
589589
FlipperKit: cbdee19bdd4e7f05472a66ce290f1b729ba3cb86
590590
fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9
591-
glog: 04b94705f318337d7ead9e6d17c019bd9b1f6b1b
591+
glog: 40a13f7840415b9a77023fbcae0f1e6f43192af3
592592
hermes-engine: 47986d26692ae75ee7a17ab049caee8864f855de
593593
libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913
594594
OpenSSL-Universal: ebc357f1e6bc71fa463ccb2fe676756aff50e88c
@@ -619,7 +619,7 @@ SPEC CHECKSUMS:
619619
React-RCTVibration: 43ffd976a25f6057a7cf95ea3648ba4e00287f89
620620
React-runtimeexecutor: 7c51ae9d4b3e9608a2366e39ccaa606aa551b9ed
621621
ReactCommon: 85c98ab0a509e70bf5ee5d9715cf68dbf495b84c
622-
ReactNativeCameraKit: d95d3e19c514526a234d9f93c6db7e7f10eef9ea
622+
ReactNativeCameraKit: 7c273034b2674cf5ccbaab2e25d9ff15b3e7d698
623623
SocketRocket: fccef3f9c5cedea1353a9ef6ada904fde10d6608
624624
Yoga: 065f0b74dba4832d6e328238de46eb72c5de9556
625625
YogaKit: f782866e155069a2cca2517aafea43200b01fd5a

ios/ReactNativeCameraKit/CameraManager.swift

+6-3
Original file line numberDiff line numberDiff line change
@@ -10,22 +10,25 @@ import Foundation
1010
* Class managing the communication between React Native and the native implementation
1111
*/
1212
@objc(CKCameraManager) public class CameraManager: RCTViewManager {
13-
var camera: CameraView!
13+
var camera: CameraView?
1414

1515
override public static func requiresMainQueueSetup() -> Bool {
1616
return true
1717
}
1818

1919
override public func view() -> UIView! {
2020
camera = CameraView()
21-
2221
return camera
2322
}
2423

2524
@objc func capture(_ options: NSDictionary,
2625
resolve: @escaping RCTPromiseResolveBlock,
2726
reject: @escaping RCTPromiseRejectBlock) {
28-
camera.capture(options as! [String: Any],
27+
guard let cam = self.camera else {
28+
reject("capture_error", "CKCamera capture() was called but camera view is nil", nil)
29+
return
30+
}
31+
cam.capture(options as! [String: Any],
2932
onSuccess: { resolve($0) },
3033
onError: { reject("capture_error", $0, nil) })
3134
}

0 commit comments

Comments
 (0)