@@ -17,6 +17,7 @@ @interface CCPackageManager()
17
17
@property (nonatomic , strong ) NSMutableArray *packages;
18
18
@property (nonatomic , strong ) NSMutableArray *unzipTasks;
19
19
@property (nonatomic , strong ) CCPackageDownloadManager *downloadManager;
20
+ @property (nonatomic ) BOOL initialized;
20
21
21
22
@end
22
23
@@ -39,6 +40,8 @@ - (id)init
39
40
self = [super init ];
40
41
if (self)
41
42
{
43
+ self.initialized = NO ;
44
+
42
45
self.packages = [NSMutableArray array ];
43
46
self.unzipTasks = [NSMutableArray array ];
44
47
@@ -61,19 +64,32 @@ - (NSArray *)allPackages
61
64
62
65
- (void )loadPackages
63
66
{
67
+ if (_initialized)
68
+ {
69
+ return ;
70
+ }
71
+
64
72
[self loadPackagesFromUserDefaults ];
65
73
66
74
[self enablePackages ];
67
75
68
76
[self enqueuePausedDownloads ];
69
77
70
78
[self restartUnzippingTasks ];
79
+
80
+ self.initialized = YES ;
71
81
}
72
82
73
83
- (void )restartUnzippingTasks
74
84
{
75
85
for (CCPackage *aPackage in _packages)
76
86
{
87
+ CCPackageUnzipper *unzipper = [self unzipperForPackage: aPackage];
88
+ if (unzipper)
89
+ {
90
+ continue ;
91
+ }
92
+
77
93
if (aPackage.status == CCPackageStatusUnzipped
78
94
|| aPackage.status == CCPackageStatusUnzipping)
79
95
{
@@ -82,6 +98,19 @@ - (void)restartUnzippingTasks
82
98
}
83
99
}
84
100
101
+ - (CCPackageUnzipper *)unzipperForPackage : (CCPackage *)aPackage
102
+ {
103
+ for (CCPackageUnzipper *packageUnzipper in _unzipTasks)
104
+ {
105
+ if (packageUnzipper.package == aPackage)
106
+ {
107
+ return packageUnzipper;
108
+ }
109
+ }
110
+
111
+ return nil ;
112
+ }
113
+
85
114
- (void )enqueuePausedDownloads
86
115
{
87
116
for (CCPackage *aPackage in _packages)
0 commit comments