簡體   English   中英

ABPersonCopyImageDataWithFormat到CFDataRef會導致內存增長/大內存占用

[英]ABPersonCopyImageDataWithFormat to CFDataRef causes memory growth/large memory footprint

即使我在處理數據后使用CFRelease,但我復制2000個聯系人的聯系人圖像(每個人都有一個聯系人圖像)時,CFData仍然保持增長。 我一次訪問一個聯系人,以避免占用大量內存。 下面提供了代碼:

- (void) getImageData:(ABRecordRef) contactPerson {
//Retrieving the contact photo
//base64 conversion from NSData to NSMutableString for the thumbnail image
@autoreleasepool {
    if (ABPersonHasImageData(contactPerson)) {
        //NSMutableData *contactImageData = [[NSMutableData alloc] init];
        //NSMutableData *contactImageData = (CFBridgingRelease (ABPersonCopyImageDataWithFormat(contactPerson, kABPersonImageFormatThumbnail)));
        CFDataRef contactImageData =  ABPersonCopyImageDataWithFormat(contactPerson, kABPersonImageFormatThumbnail);

        if (contactImageData) {

            NSMutableString *imgData = [[NSMutableString alloc] init];
            [imgData setString:[(__bridge NSData *)contactImageData base64EncodedStringWithOptions:0 ]];
            currPhoneDBItem.photoBitmap = imgData;

            imgData = nil;
            //contactImageData = nil;
            CFRelease(contactImageData);

        }else{
            NSLog(@"bitmap empty:");
            currPhoneDBItem.photoBitmap = @"";
            //CFRelease(contactImageData);
        }

    } else {
        NSLog(@"bitmap empty:");
        currPhoneDBItem.photoBitmap = @"";
    }
}
}

CurrPhoneDBItem是文件中的全局對象。 我仍在嘗試找出解決此問題的方法。 我沒有所需的聲譽,因此無法發布Instruments個人資料的屏幕截圖。 但是CFData最終使用了23MB。 任何幫助將不勝感激 !!!

有一陣子了。 引起此問題的原因是保留了引用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM