What are dependency injection approaches for AVFoundation in Swift?

// Dependency Injection using Initializers class CameraManager { let captureSession: AVCaptureSession init(captureSession: AVCaptureSession) { self.captureSession = captureSession } func setupCamera() { // Camera setup code } } // Usage let customCaptureSession = AVCaptureSession() let cameraManager = CameraManager(captureSession: customCaptureSession) cameraManager.setupCamera() // Dependency Injection using Property Injection class VideoRecorder { var captureSession: AVCaptureSession? func setupCamera() { // Camera setup code } } // Usage let recorder = VideoRecorder() recorder.captureSession = AVCaptureSession() recorder.setupCamera() // Dependency Injection using Protocols protocol CameraConfigurable { func configureSession() -> AVCaptureSession } class CustomCamera: CameraConfigurable { func configureSession() -> AVCaptureSession { let session = AVCaptureSession() // Configuration code return session } } class CameraHandler { let camera: CameraConfigurable init(camera: CameraConfigurable) { self.camera = camera } func startCamera() { let session = camera.configureSession() // Start camera } } // Usage let customCamera = CustomCamera() let cameraHandler = CameraHandler(camera: customCamera) cameraHandler.startCamera()