別の.mファイルのイメージで処理しようとしています。現在のところ、以下は私のコードです。私は2つのUIImagesを格納し、2つを処理するグローバルなNSMutableArrayを持っています。ユーザーがボタンをクリックするたびに、2つの画像がグローバルアレイに保存され、それらを処理して要素を削除します。私はARCを使用しているので、私にはリリースは必要ありません。ARC GPUImageを使用したメモリリーク
@implementation
NSMutableArray * imagesArray;
ImageProcessor *imageProcessor;
...
- (void)viewDidLoad {
imagesArray = [[NSMutableArray alloc] init];
imageProcessor = [[ImageProcessor alloc] init];
//some other code
}
-(UIImage*)processImages{//process images using GPUImage
UIImage *firstImg = [[imagesArray objectAtIndex:1] copy];
UIImage *secImg = [[imagesArray objectAtIndex:0] copy];
UIImage *processedImage = [imageProcessor flashSubtract:firstImg : secImg];
UIImage *dividedImage = [imageProcessor referenceDivide:processedImage];
// [self uploadDropbox:UIImagePNGRepresentation(processedImage) : @"Output.png"];//try to save tiff files
//using ARC, no explicit memory releasing required
NSLog(@"image processed!");
[imagesArray removeAllObjects];
return dividedImage;
}
ImageProcessor.m:
#import "ImageProcessor.h"
@interface ImageProcessor()
@end
@implementation ImageProcessor
GPUImageSubtractBlendFilter *subFilter;
GPUImageDivideBlendFilter* divFilter;
-(id)init {
self = [super init];
//initialize filters
subFilter = [[GPUImageSubtractBlendFilter alloc] init];
divFilter = [[GPUImageDivideBlendFilter alloc] init];
return self;
}
-(UIImage*)flashSubtract:(UIImage*) image1 : (UIImage*) image2{
UIImage *processedImage;
// @autoreleasepool {
//CAUSING MEMORY ISSUE
GPUImagePicture *img1 = [[GPUImagePicture alloc] initWithImage:image1];//image with flash
GPUImagePicture *img2 = [[GPUImagePicture alloc] initWithImage:image2];//image without flash
//MEMORY ISSUE END
[img1 addTarget:subFilter];
[img2 addTarget:subFilter];
[img1 processImage];
[img2 processImage];
[subFilter useNextFrameForImageCapture];
processedImage = [subFilter imageFromCurrentFramebuffer];
// }
//consider modifications to filter possibly?
return processedImage;
}
@end
私は[画像プロセッサflashSubtract]の後に、それはメモリを解放しないメモリリークの問題を取得しています。メモリ使用量が増え続け、約30枚の写真の後に、アプリケーションがクラッシュします。私が何か悪いことをしているかどうか教えてください。どんな助けでも大歓迎です。問題を特定するのに役立つことができ、
申し訳ありません__weakでテストしていましたが、私は客観的なcをかなり新しくしているので、実際にはオプションを使い果たしていました。うん、私はnsmutable配列を使用するように感じるそれと何かを持っている可能性があります –