UIImageJPEGRepresentation內(nèi)存暴漲

使用UIImageJPEGRepresentation對(duì)圖片進(jìn)行壓縮上傳時(shí)發(fā)現(xiàn)內(nèi)存暴漲,且無法回收。根源是對(duì)象持有的問題,導(dǎo)致內(nèi)存無法釋放,即壓縮的圖片對(duì)象還在被原有的類或者對(duì)象所持有。在拍照,或者從相冊(cè)選擇圖片后。本地持久化,然后釋放原有Image或NSData對(duì)象的持有。上代碼,下面代碼是我自己封裝的UIImagePickerController,持有圖片的對(duì)象有屬性UIImage *originalImage及UIImageView *showImageView。

            UIImage *imgimg = [weakSelf screenShotView:weakSelf.showImageView];
            // 把裁剪好的圖片存儲(chǔ)到沙盒
            NSData *imageData = UIImageJPEGRepresentation([UIImage fixOrientation:imgimg], 0.000000000000000001);
            NSFileManager *fileManage=[NSFileManager defaultManager];
            NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
            NSString *documentsDirectory=[paths objectAtIndex:0];//Documents目錄
            //在Documents下面創(chuàng)建一個(gè)Image的文件夾的路徑
            NSString *createPath=[NSString stringWithFormat:@"%@/Images_UIImageJPEGRepresentation",documentsDirectory];
            //沒有這個(gè)文件夾的話就創(chuàng)建這個(gè)文件夾
            if(![fileManage fileExistsAtPath:createPath]){
                [fileManage createDirectoryAtPath:createPath withIntermediateDirectories:YES attributes:nil error:nil];
                NSLog(@"已創(chuàng)建文件夾");
            }
            //把數(shù)據(jù)以.png的形式存儲(chǔ)在沙盒中,路徑為可變路徑
            NSString *filePath = [NSString stringWithFormat:@"%@/%@.png",createPath,@"UIImageJPEGRepresentation"];
            [[NSFileManager defaultManager] createFileAtPath:filePath contents:imageData attributes:nil];
            _originalImage = nil;
            _showImageView.image = nil;
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容