前提・実現したいこと
swiftでiphoneローカルで保存した動画を再生するプログラムを書いています
ソフト自体は正常に動作しているのですが、ブレイクポイントを貼っても処理が止まることがなく動きつづけてしまいます。本当に期待している行が動作しているのか確認できず困っています。
関数名.プロパティでその関数が走るわけではないのでしょうか?
<追記>
ブレークポイントはDisableになっていません。
Xcode12.3
swift5
iOS 14.2
swift
1var videoURL: URL? 2 func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { 3 4//ここにブレークポイントを貼っても止まらずソフトは動き続ける 5 videoURL = info["UIImagePickerControllerMediaURL"] as? URL 6 7 let completion: () -> () = { [weak self] in 8 guard let url = self?.videoURL else { return } 9 print(url) 10 self?.playMovie(url) 11 self?.frameoutput(url) 12 } 13 imagePickerController.dismiss(animated: true, completion: completion) 14 } 15 16 // MARK: - Private 17 //ビデオの再生部分 18 fileprivate func playMovie(_ url: URL) { 19 let player = AVPlayer(url: url) 20 let playerViewController = AVPlayerViewController() 21 playerViewController.player = player 22 23 present(playerViewController, animated: true){ 24 playerViewController.player?.play() 25 } 26 } 27 //動画一覧表示 28 @IBAction func selectImage(_ sender: Any) { 29//ブレークポイントを貼るとボタン押下でここは止まる 30 imagePickerController.sourceType = .photoLibrary 31 imagePickerController.delegate = self 32 imagePickerController.mediaTypes = ["public.movie"] // 動画のみ表示 33 present(imagePickerController, animated: true, completion: nil) 34 } 35 36 func frameoutput(_ url: URL){ 37 let asset = AVURLAsset(url: url) 38 let video = asset.tracks(withMediaType: .video).first! 39 let reader = try! AVAssetReader(asset: asset) 40 let outputSetting = [kCVPixelBufferPixelFormatTypeKey as String: kCVPixelFormatType_32BGRA] 41 let output = AVAssetReaderTrackOutput(track: video, outputSettings: outputSetting) 42 if reader.canAdd(output) { 43 reader.add(output) 44 } 45 output.copyNextSampleBuffer() 46 } 47}
ブレークポイントが「Disable」になっていることはないでしょうか。
Enable と Disable のブレークポイントは両方とも青色で色味が少し違うだなので、分かりにくくなっている可能性はあるかもしれません。
また、Enable <-> Disable の切り替えはダブルクリックでもできますので、何らかの拍子に切り替わっているのかもしれません。
Ctrl + クリックしたときに 「Enable Breakpoint」と出るようであれば、そのブレークポイントは Disable になっています。
あるいは、ナビゲータペイン(ウインドウ左側のエリア)から、「Show the Breakpoint navigator (横向きホームベース型のアイコン)」を選択、あるいはメニューから「View -> Navigators -> Breakpoint」、もしくは ⌘ + 8 でブレークポイント一覧が表示されますので、それで比較してみるとよいかもしれません。
あと、投稿される際のコードは <CODE> ブロック、あるいは``` で囲まれた方がコードが読みやすいので、ぜひご質問を修正するようお願いします。他の方のご質問をみると、コードが整形されていると思いますが、それと同じように投稿されるコードを整形させることが可能です。
また、ブレークポイントについては、必要に応じてスクリーンショットを追加されるのも良いかもしれません。
イメージピッカーを開いて、画像を選択された後に呼び出されるimagePickerController(_:didFinishPickingMediaWithInfo:) の中に設定したブレークポイントが、然るべきタイミング(画像を選択し、この delegate が呼び出されたあと、イメージピッカーが閉じる前)に呼び出されない(というか、設定しても実行されない)ということでしょうか。
返信ありがとうございます。その通りです
全く同じ環境を準備できないため検証が難しいですね...
あなたの回答
tips
プレビュー