ios - App Crash, "Lost Connection" -


similar this question,

i having issues , app crashing in same way. assume same answer on other question: memory issue; except getting crash during avassetexportsession call.

guard let exporter = avassetexportsession(asset: mixcomposition, presetname: avassetexportpresethighestquality) else { return }         exporter.outputfiletype = avfiletypempeg4         exporter.outputurl = url         exporter.videocomposition = maincomposition         print("done")          exporter.exportasynchronously(completionhandler: {             dispatchqueue.main.async(execute: {                 self.exportdidfinish(exporter)                 print("removing ai")                 self.removeai()                 print("removed ai")                 completion()             })         })  func exportdidfinish(_ exporter:avassetexportsession) {     if(exporter.status == avassetexportsessionstatus.completed) {         print("cool")     }     else if(exporter.status == avassetexportsessionstatus.failed) {         print(exporter.error any)     } } 

it prints "done" never prints "removing ai". doesn't print "cool" or "(error)"; crashes , says @ top of xcode "lost connection iphone..." other question states.

i assume memory issue, there nothing happening in between (to knowledge of how works) during asynchronous exporting waiting completion handler called. nothing gets called in between , unsure how handle this. thoughts?

i think avassetexportsession object may deallocated while running async task. consider put class variable make sure async block can finish it's task. like:

class myclass {     var exporter: avassetexportsession?      func export() {         exporter = avassetexportsession(asset: mixcomposition, presetname: avassetexportpresethighestquality)         guard exporter != nil else { return }         exporter.outputfiletype = avfiletypempeg4         exporter.outputurl = url         exporter.videocomposition = maincomposition         print("done")          exporter?.exportasynchronously(completionhandler: {              dispatchqueue.main.async {                self.exportdidfinish(exporter)                print("removing ai")                self.removeai()                print("removed ai")                completion()            }         }     } } 

i'm not sure why put on main thread in completion block, maybe want ui later, leave there.

but import - make avassetexportsession not stored on method may dealloc it. it's memory issue cause this.


Comments

Popular posts from this blog

ubuntu - PHP script to find files of certain extensions in a directory, returns populated array when run in browser, but empty array when run from terminal -

php - How can i create a user dashboard -

javascript - How to detect toggling of the fullscreen-toolbar in jQuery Mobile? -