我是开发ios app的新人。
@property (copy, nonatomic) NSMutableArray* dataBufferArray;
以下代码在一个经常调用的回调函数中运行。
[analyzer.dataBufferArray addObject:[NSNumber numberWithInteger:thisFrame]]; [analyzer.dataBufferArray removeAllObjects];
ARC中的代码 我发现记忆总是在增长!最后IOS退出我的应用程序导致大量内存消耗。
我的问题是:为什么removeAllObjects无法释放内存? 如何解决?
发布更多代码
static int analyze(SAMPLE *inputBuffer, unsigned long framesPerBuffer, AudioSignalAnalyzer *analyzer) { SAMPLE *pSample = inputBuffer; for (long i = 0; i SAMPLE_RATE){ NSArray* unitSampleArray = [analyzer.dataBufferArray subarrayWithRange:NSMakeRange(0, SAMPLE_RATE - 1)]; [analyzer.dataBufferArray removeObjectsInRange:NSMakeRange(0, SAMPLE_RATE - 1)]; //use thread to process NSInvocationOperation *operation = [[NSInvocationOperation alloc]initWithTarget:analyzer selector:@selector(decodeSound:) object:unitSampleArray]; [analyzer.queue addOperation: operation]; } // for protect if (analyzer.dataBufferArray.count > SAMPLE_RATE * 12){ NSLog(@"sample in data buffer so big, need clear"); [analyzer.dataBufferArray removeAllObjects]; } return 0; }
如您所见,分析函数是由AudioQueueNewInput回调。 我使用NSMutableArray添加对象NSNumber,而且我总是' removeObjectsInRange:'他们。我用仪器检查内存,它总是在增长!
答案 0 :(得分:0)
您正在使用基于ARC的项目,无需释放内存,它将自动管理。您的问题在其他地方,请发布更多代码。