解法:
- 降低瞬間取照片的數量
- 使用 @autoreleasepool{ } 處理記憶體管理
[self.library assetForURL:[NSURL URLWithString:@"assets-library://..."] resultBlock:^(ALAsset *asset) {
//NSLog(@"asset:%@",asset);
UIImage *image = nil;
@autoreleasepool {
image = [UIImage imageWithCGImage:[[asset defaultRepresentation] fullResolutionImage]];
}
} failureBlock:^(NSError *error) {
}];
只是,這樣也沒有真的避免大量記憶體的使用 Orz 因為 [asset defaultRepresentation] fullResolutionImage] 真的吃滿大的記憶體,例如 5MB 大小的照片,處理一張照片時,記憶體會瞬間加了 30~50MB,所以瞬間處理 3~5 張時,記憶體還可能衝到 2xxMB ,直到 Terminated due to Memory Pressure。暫時想到的解法就只能透過降低處理照片的張數了。
實際例子是 app 初始化完大概 20MB 記憶體,跑上述 code 處理 3 張照片可以吃到 90MB,不曉得是不是 CGImage 的關係?改天有空再追一下。
我也遇到一樣的問題 請問有解嗎xd
回覆刪除