瀏覽代碼

1.同步修复批量下载偶现闪退问题

huangxiaodong 2 周之前
父節點
當前提交
6e23d3bbbc
共有 1 個文件被更改,包括 30 次插入35 次删除
  1. 30 35
      创维盒子/code/NAS/nasDownloadManager/nasDownloadFileManager.m

+ 30 - 35
创维盒子/code/NAS/nasDownloadManager/nasDownloadFileManager.m

@@ -1,13 +1,12 @@
 //
 //  nasDownloadFileManager.m
-//  Private-x
 //
-//  Created by xd h on 2024/8/5.
+//
+//  Created by David on 2024/8/5.
 //
 
 #import "nasDownloadFileManager.h"
 @interface nasDownloadFileManager ()
-@property (nonatomic, strong)NSLock *lock;
 
 @end
 
@@ -33,7 +32,6 @@ static nasDownloadFileManager * cur_nasDownloadFileManager = nil;
         [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(downloadTaskFinishedNoti:) name:nasDownloadTaskExeEnd object:nil];
         [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(downloadTaskFinishedNoti:) name:nasDownloadTaskExeError object:nil];
         
-        _lock = [[NSLock alloc] init];
         [self initDownloadManagerFun];
     }
     
@@ -154,8 +152,7 @@ static nasDownloadFileManager * cur_nasDownloadFileManager = nil;
     
     //KWeakSelf
     dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0), ^{
-//    NSLock *lock = [NSLock new];
-//    [lock lock];
+
         [couldPhoneFileModel bg_findAsync:nas_box_download_tableName limit:0 orderBy:nil desc:YES complete:^(NSArray * _Nullable array) {
             NSMutableArray *failArr = [NSMutableArray new];
             NSMutableArray *doneArr = [NSMutableArray new];
@@ -174,24 +171,22 @@ static nasDownloadFileManager * cur_nasDownloadFileManager = nil;
                     }
                 }
             }
-            NSLock *lock = [NSLock new];
-            [lock lock];
-            
-            NSMutableArray *newArr = [NSMutableArray new];
-            [newArr addObject:otherArr];
-            [newArr addObject:doneArr];
-            [newArr addObject:failArr];
-            self->_databaseArr = newArr;
             
-            [lock unlock];
-            
-            if(isReGet){
-                [self checkDownloadTaskFun];
+            @synchronized (self) {
+                
+                NSMutableArray *newArr = [NSMutableArray new];
+                [newArr addObject:otherArr];
+                [newArr addObject:doneArr];
+                [newArr addObject:failArr];
+                self->_databaseArr = newArr;
+                
+                if(isReGet){
+                    [self checkDownloadTaskFun];
+                }
+                
+                complete(self->_databaseArr);
             }
-            
-            complete(self->_databaseArr);
         }];
-   // [lock unlock];
     });
 
 }
@@ -408,10 +403,10 @@ static nasDownloadFileManager * cur_nasDownloadFileManager = nil;
 //                HLog(@"正在遍历下载完成数组 并且添加 %@",dataModel.name)
 //                NSMutableArray *doneArr = _databaseArr[1];
 //                [doneArr insertObject:dataModel atIndex:0];
-//                
+//
 //                //更新数据库
 //                [dataModel bg_saveOrUpdateAsync:^(BOOL isSuccess) {
-//                                    
+//
 //                }];
                 
                 curDataModel = dataModel;
@@ -591,15 +586,15 @@ static nasDownloadFileManager * cur_nasDownloadFileManager = nil;
     }
     
 //    {
-//        
+//
 //        couldPhoneFileModel* dataModel = nil;
 //        if(arr && arr.count > 0){
 //            dataModel = arr.firstObject;
-//            
+//
 //            //修改数据库状态
 //            dataModel.curDownloadStateType = downloadStateUploading;
 //            [couldPhoneFileModel bg_saveOrUpdateArrayAsync:@[dataModel] complete:^(BOOL isSuccess) {
-//                            
+//
 //            }];
 //        }else{
 //            return;
@@ -607,9 +602,9 @@ static nasDownloadFileManager * cur_nasDownloadFileManager = nil;
 //        NSString *urlString = dataModel.fileUrl;
 //        NSString *requestURLEncodedString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
 //        HLog(@"%@",urlString);
-//        
+//
 //        [[nasDownloadManager shareManager] startDownLoadWithUrl:requestURLEncodedString];
-//        
+//
 //    }
 }
 
@@ -688,15 +683,13 @@ static nasDownloadFileManager * cur_nasDownloadFileManager = nil;
     }
     
     BOOL flag = NO;
-    [_lock lock];
+    @synchronized (self) {
         NSString *key = url;
         NSMutableDictionary *dictM =  [self getDownloadDownList];
         [dictM setObject:dict forKey:key];
         flag = [dictM writeToFile:[self getDownloadDonePlistPath] atomically:YES];
-    [_lock unlock];
-    
-    return flag;
-    
+        return flag;
+    }
 }
 
 /**  删除配置信息 */
@@ -719,8 +712,10 @@ static nasDownloadFileManager * cur_nasDownloadFileManager = nil;
 {
     HLog(@"deleteDownloadDonePlistInfoBy:%@",fullPath)
     NSMutableDictionary *dictM =  [self getDownloadDownList];
-    for (NSString*key in dictM) {
-        NSDictionary*dict = dictM[key];
+    
+    NSDictionary * forDict = [NSDictionary dictionaryWithDictionary:dictM];
+    for (NSString*key in forDict) {
+        NSDictionary*dict = forDict[key];
         
         if ([[dict allKeys] containsObject:@"fullPath"]) {
             NSString * infofullPath = dict[@"fullPath"];