解决方案 »

  1.   

    你例子的现象,跟 ARC无关,这个应该是跟生命周期有一定的关系。
    你可以建一个非ARC的项目,把这段代码加进去,然后把view release加上,,一样会内存增加。
      

  2.   

        dispatch_async(dispatch_get_main_queue(), ^(){
            UIView *view = nil;
            int i = 100000;
            while ( i > 0 ) {
                
                [view removeFromSuperview];
                view = [[UIView alloc] initWithFrame:self.view.bounds];
                [self.view addSubview:view];
                
                --i;
                if ( i % 1000 == 0 )
                {
                    NSLog(@"!!!!");
                }
            }
        });
    可以试下这段代码,运行中内存不停涨,结束后,内存会降下来。
    所以我会说可能跟生命周期有关系。
    具体的解释我说不出来。ARC我仅知道时候替代了手动的release而已。也就是说,使用ARC实际上就是在编译期间编译器自动为每个Objective-C指针变量添加合适的retain, release, autorelease等函数,保存每个变量的生存周期控制在合理的范围内,以期实现代码上的自动内存管理。
      

  3.   

    你可以手动创建一个自动释放池在这里。默认系统创建的自动释放池是在主运行循环周期完成一次才会drain一次。所以你可以尝试手动在里面建池子,倒池子。
      

  4.   

    问题解决了,貌似是xcode的bug.用同事的5.0.2编译运行内存就不会一直增加.但是奇怪的是我升级到5.0.2.内存照样是一只增加.难道是电脑的问题????