浏览代码

内存泄漏

harry 3 年之前
父节点
当前提交
41bec8a9cb

+ 5 - 5
BFRecordScreenKit/Classes/BFRecordItemModel.swift

@@ -20,8 +20,8 @@ public class BFRecordItemModel: NSObject {
 //    var baseMaterial : AVURLAsset?
     var localPath: String?
     var materialDuraion: Double = 0.0
-    var fetchCoverImg: ((UIImage) -> Void)?
-    var fetchAVUrlAsset: ((AVURLAsset) -> Void)?
+    var fetchCoverImgCallBack: ((UIImage) -> Void)?
+    var fetchAVUrlAssetCallBack: ((AVURLAsset) -> Void)?
     var fetchPlayItemCallBack: ((BFRecordItemModel?) -> Void)?
     var dealedDurationRanges = [SplitRecordRange]() // 录音切割的时间区间,合成导出时计算
     public var voiceStickers = [PQVoiceModel]() //
@@ -71,7 +71,7 @@ public class BFRecordItemModel: NSObject {
             // 设置首帧/封面
             if image != nil {
                 self?.coverImg = image
-                self?.fetchCoverImg?(image!)
+                self?.fetchCoverImgCallBack?(image!)
             }
         }
     }
@@ -101,11 +101,11 @@ public class BFRecordItemModel: NSObject {
             guard let sself = self else {
                 return
             }
-            if let videoAsset = asset as? AVURLAsset {
+            if let videoAsset = (asset as? AVURLAsset) {
                 sself.materialDuraion = videoAsset.duration.seconds
                 sself.localPath = (videoAsset.url.absoluteString.removingPercentEncoding)?.replacingOccurrences(of: "file://", with: "")
                 sself.videoAsset = videoAsset
-                sself.fetchAVUrlAsset?(videoAsset)
+                sself.fetchAVUrlAssetCallBack?(videoAsset)
             }
         })
     }

+ 9 - 6
BFRecordScreenKit/Classes/RecordScreen/Controller/BFRecordScreenController.swift

@@ -1306,9 +1306,9 @@ public class BFRecordScreenController: BFBaseViewController {
                 itemModels.append(itemModel)
                 if index == 0 {
                     if asset.mediaType == .video {
-                        itemModel.fetchAVUrlAsset = { [weak self, weak itemModel] _ in
+                        itemModel.fetchAVUrlAssetCallBack = { [weak self, weak itemModel] _ in
                             //                            self?.export(avsss:uralss)
-                            DispatchQueue.main.async { [weak self] in
+                            DispatchQueue.main.async { [weak self, weak itemModel] in
                                 self?.progressThumV.recordItem = itemModel
                                 self?.progressThumV.isHidden = false
                             }
@@ -1549,11 +1549,14 @@ extension BFRecordScreenController: UICollectionViewDelegate, UICollectionViewDa
         } else {
             cell = BFImageCoverViewCell.gpuImageViewCell(collectionView: collectionView, indexPath: indexPath)
         }
-        recordItem.fetchCoverImg = { [weak self, weak cell] _ in
+        recordItem.fetchCoverImgCallBack = { [weak self, weak cell, weak recordItem] _ in
+            guard let sself = self, let item = recordItem else {
+                return
+            }
             cell?.addData()
-            if recordItem.mediaType == .IMAGE {
-                self?.progressThumV.recordItem = recordItem
-                self?.progressThumV.isHidden = false
+            if item.mediaType == .IMAGE {
+                sself.progressThumV.recordItem = item
+                sself.progressThumV.isHidden = false
             }
         }
         recordItem.fetchPlayItemCallBack = { [weak self] item in