Ver código fonte

【综合】批量转档/压缩 - 选择大文档-在结束之前关闭界面,转换完成后Crash

niehaoyu 9 meses atrás
pai
commit
4eed1e9fec

+ 8 - 3
PDF Office/PDF Master/Class/Batch/Operation/KMBatchConvertOperation.swift

@@ -26,6 +26,7 @@ class KMBatchConvertOperation: KMBatchOperation, CPDFConverterDelegate, CPDFConv
     var converter: CPDFConverter?
     var pdfDocument: CPDFDocument?
     var isAllInOneSheet: Bool = false
+    
     deinit {
         
     }
@@ -206,9 +207,11 @@ class KMBatchConvertOperation: KMBatchOperation, CPDFConverterDelegate, CPDFConv
                 self.delegate?.fileOperateSuccessed?(self.operateFile!, info: (self.operateFile?.currentConvertParameter!)!)
             }
             self.fpPDFConverter?.setDelegate(nil)
+        if self.viewController?.view.window?.isVisible == true {
             willChangeValue(forKey: "isFinished")
             hasFinished = true
             didChangeValue(forKey: "isFinished")
+        }
 //        }
     }
     func fppdfConverter(_ converter: Any!, pageIndex pageIndexA: UInt, progress: UInt) {
@@ -268,9 +271,11 @@ class KMBatchConvertOperation: KMBatchOperation, CPDFConverterDelegate, CPDFConv
         if self.converter != nil && self.converter?.delegate != nil {
             self.converter?.delegate = nil
         }
-        willChangeValue(forKey: "isFinished")
-        hasFinished = true
-        didChangeValue(forKey: "isFinished")
+        if self.viewController?.view.window?.isVisible == true {
+            willChangeValue(forKey: "isFinished")
+            hasFinished = true
+            didChangeValue(forKey: "isFinished")
+        }
     }
     
 }

+ 23 - 15
PDF Office/PDF Master/Class/Batch/Operation/KMCompressOperation.swift

@@ -51,16 +51,20 @@ class KMCompressOperation: KMBatchOperation{
                     self.delegate?.fileOperateFailed?(self.operateFile!, error: self.errorWithMsg(KMLocalizedString("Failed", nil)), info: self.operateFile!.compressInfo)
                 }
             }
-            self.willChangeValue(forKey: "isFinished")
-            self.hasFinished = true
-            self.didChangeValue(forKey: "isFinished")
+            if self.viewController?.view.window?.isVisible == true {
+                self.willChangeValue(forKey: "isFinished")
+                self.hasFinished = true
+                self.didChangeValue(forKey: "isFinished")
+            }
         }else {
-            willChangeValue(forKey: "isFinished")
-            willChangeValue(forKey: "isExecuting")
-            hasExcuting = false
-            hasFinished = true
-            didChangeValue(forKey: "isExecuting")
-            didChangeValue(forKey: "isFinished")
+            if self.viewController?.view.window?.isVisible == true {
+                willChangeValue(forKey: "isFinished")
+                willChangeValue(forKey: "isExecuting")
+                hasExcuting = false
+                hasFinished = true
+                didChangeValue(forKey: "isExecuting")
+                didChangeValue(forKey: "isFinished")
+            }
         }
     }
     override func cancel() {
@@ -71,13 +75,17 @@ class KMCompressOperation: KMBatchOperation{
             }
             self.delegate?.fileOperateCanceled?(self.operateFile!, info: self.operateFile!.compressInfo)
             
-            willChangeValue(forKey: "isFinished")
-            hasFinished = true
-            didChangeValue(forKey: "isFinished")
+            if self.viewController?.view.window?.isVisible == true {
+                willChangeValue(forKey: "isFinished")
+                hasFinished = true
+                didChangeValue(forKey: "isFinished")
+            }
         } else {
-            willChangeValue(forKey: "isCancelled")
-            hasCanceled = true
-            didChangeValue(forKey: "isCancelled")
+            if self.viewController?.view.window?.isVisible == true {
+                willChangeValue(forKey: "isCancelled")
+                hasCanceled = true
+                didChangeValue(forKey: "isCancelled")
+            }
         }
     }
     func compressToPath(targetPath: String?, documentPath: String, password: String, compressType: NSNumber?, completeHandler: compressCallbackBlock) {

+ 2 - 0
PDF Office/PDF Master/Class/Batch/Tools/KMBatchOperation.swift

@@ -23,6 +23,8 @@ class KMBatchOperation: Operation{
     weak var operateFile: KMBatchOperateFile?
     weak var delegate: KMBatchOperateProtocol?
     
+    var viewController: NSViewController?
+    
     init(file: KMBatchOperateFile) {
         super.init()
         self.operateFile = file