首页 文章

为什么iOs代码使用了如此多的内存和CPU

提问于
浏览
-1

我有一些排列/组合代码迭代20个对象,一次取5个 . 当列表符合某些条件时,我打印组成该列表的对象 . 不用说循环相当大 . 我将所有组合放在循环内部的NSMutableArray中 . 一旦添加了对象并通过/未通过测试,我将从阵列中删除所有对象 . (下面的Psuedo代码) .

-(void)CreateCombinations
{
   NSMutableArray *Combinations = [[NSMutableArray alloc] init];
   @autoreleasepool {
   NSArray *objectsList = [[NSArray alloc] initWithObjects: 
   @“Lisa”,@“Kevin”,…nil];
   } //autorelease pool

   while(!Finished)
   {
       Combinations = [self getNextCombo: Combinations]
        if (goodCombination)
           [self printCombos:Combinations]

        [Combinations removeAllObject];
   } 
}

在监视调试会话时,CPU和内存处于容量状态 . 我确信循环正在发挥作用 . 我不相信我会为每次迭代重新分配'组合'数组 . 如果我是,我可以做些什么来确保它在循环的下一次迭代之前被正确释放或释放?

当我添加@autorelease(在循环之前)时,我得到了“使用未声明的标识符错误” .

1 回答

  • 0

    您无法猜出您的真实代码出错的代码 . 但是如果您正在使用内存,因为您在循环期间堆积自动释放的对象,请将循环内部包装在 @autoreleasepool 块中:

    while (...) {
        @autoreleasepool {
            // do stuff
        }
    }
    

    我的想法是每次通过循环释放临时使用的内存 .

相关问题