? ? ? ? 本文主要分析ipad使用UIImagePickerController調用系統相機出現內存泄漏問題,經測試iphone上并未出現內存泄漏現象!
正文:
? ? ? ? ?使用xcode自帶內存分析工具發(fā)現在拍照過程中內存消耗很大,且隨著拍照越來越多內存占用越來越多,最終使得程序掛掉,下圖為拍照前后內存使用情況以及l(fā)eak工具檢測結果:
拍照前內存使用情況:

拍兩張后內存使用情況:

leak工具檢測結果:

? ? ? ? 以上檢測結果是使用Xcode自帶的debug和instruments中的leak工具檢測,從leak工具檢測結果可以清楚的看到拍照過程中存在內存泄漏點為:[AVCapturePhotoOutput init];AVCapturePhotoOutput作為照片輸出流是ios10新出的,于是考慮用老的AVCaptureStillImageOutput作為圖片輸出重新寫了一套拍照實現,經測試不再有內存泄漏。修改后leak檢測結果如下圖:
修改后leak檢測結果:

注:目前在ios11上官方仍未修復AVCapturePhotoOutput存在的內存泄漏問題、經測試AVCaptureStillImageOutput在ios11上仍然可用,當然這只是一種過渡解決方案,已經向官方提了bug reporting,希望官方能盡快修復這一問題!
附:自定義相機實現并不復雜這里不再贅述