我知道之前已经问过这个问题,但似乎没有任何效果。
我有一个使用CIImage
和CGIImage
返回已过滤图像的静态方法,我使用了RayWenderlich.com上的示例并将其更改为返回UIImage而不是直接将其设置为的UIImageView。
我的问题是CGImageRef cgimg
永远不会被释放。这导致了相当快的内存泄漏。我做错了什么?
+ (UIImage *)image:(UIImage *)image withFilterName:(NSString *)filterName
{
if (!image)
return nil;
@autoreleasepool {
CIImage *beginImage = [[CIImage alloc] initWithCGImage:image.CGImage];
CIContext *context = [CIContext contextWithOptions:nil];
CIFilter *filter = [CIFilter filterWithName:@"CIPhotoEffectProcess"]
[filter setValue:beginImage forKey:kCIInputImageKey];
CIImage *outputImage = [filter outputImage];
CGImageRef cgimg = [context createCGImage:outputImage fromRect:[outputImage extent]];
UIImage *newImage = [UIImage imageWithCGImage:cgimg];
CGImageRelease(cgimg);
return newImage;
}
}
答案 0 :(得分:1)
看起来cgimg
正在发布。我假设你的意思是CGImage
没有被释放。你不会指望它,因为你将它传递给UIImage
,这可能会保留它。
最有可能你后来泄漏了UIImage
(或者当你没有意思到这一点时保持它,这类似于泄漏)。我会审核您使用的代码并发布UIImage
,而CGImageRef
可能会自行处理。
答案 1 :(得分:0)
尝试这种方式....
{
"_source": {
"includes": ['user.screen_name','entities.hashtags.text']
"excludes": ['retweeted', ]
},
"query":{
"match_all":{}