I am recording voice with AVAudioRecorder in parallel, i am running NStimer in interval of 1 second with a function is merging multiple images to one and adding the same into NSmutablearray to use these images for video(MP4) in future. But after 10 second it is giving receive memory leak warning and crashing every time. Please see below code for the same were i am wrong in any case.
This function is calling with NStimer in interval of 1 second.
NSTimer *movementTimer=[NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(changingSmiles) userInfo:nil repeats:YES];
-(void)changingSmiles{
[recorder updateMeters];
const double ALPHA = 0.05;
float lowPassResults=0.0;
double peakPowerForChannel = pow(10, (0.05 * [recorder peakPowerForChannel:0]));
lowPassResults = ALPHA * peakPowerForChannel + (1.0 - ALPHA) * lowPassResults;
float voiceLevel = [recorder peakPowerForChannel:0];
[voiceNotesArray addObject:[NSString stringWithFormat:@"%f",voiceLevel]];
if(lowPassResults>0.0){
if (lowPassResults<=0.002018) {
smileView.image = [smileArr objectAtIndex:2];
UIImage *image = [self mergeImage:imagefirst:centerView.image:thirdImage];
[self.imagesArray addObject:image];
}
}
}
Below Function is using to merge images where memory leak is occurring and application is crashing every time.
- (UIImage*)mergeImage:(UIImage *)first:(UIImage *)second:(UIImage *)third
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
referenceView.frame = CGRectMake(0, 0, 1024, 768);
referenceView.hidden = NO;
[self.view insertSubview:referenceView belowSubview:selfView];
imgView1.image = first;
imgView2.image = baseview.image;
imgView3.image = second;
imgView4.image = third;
imgView1.frame = selfView.frame;
imgView2.frame = self.view.bounds;
imgView3.frame = centerView.frame;
imgView4.frame = smileView.frame;
[referenceView addSubview:imgView1];
[referenceView addSubview:imgView2];
[referenceView addSubview:imgView3];
[referenceView addSubview:imgView4];
UIImage *finalImage = nil;
UIGraphicsBeginImageContext(referenceView.bounds.size);
[referenceView.layer renderInContext:UIGraphicsGetCurrentContext()];
finalImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
[referenceView removeFromSuperview];
[imgView1 removeFromSuperview];
[imgView2 removeFromSuperview];
[imgView3 removeFromSuperview];
[imgView4 removeFromSuperview];
//CGImageRelease(finalImage.CGImage);
return finalImage;
[pool drain];
}
Could you please let help me out for this issue. I am using the ARC project but for this file i have disable ARC and make it Non-ARC. Please help me.
Thanks in advance.