cari

Rumah  >  Soal Jawab  >  teks badan

iOS ARC 内存一直不停的增加

ringa_leeringa_lee2771 hari yang lalu617

membalas semua(4)saya akan balas

  • PHP中文网

    PHP中文网2017-04-17 15:46:11

    NSThread线程中不要使用NSData的subdataWithRange方法

    转来的,你可以看看

    balas
    0
  • 天蓬老师

    天蓬老师2017-04-17 15:46:11

    代码没给全吧,也没看出来对data做了啥操作啊。另外,在主线程调用sleepForTimeInterval会卡住UI线程的。

    balas
    0
  • PHPz

    PHPz2017-04-17 15:46:11

    楼主确定这这些代码引起的内存增长吗?如果确定,可以在这个函数入口加个断点,然后一步一步的调试,看看走完哪一行代码后内存有的增长

    balas
    0
  • 大家讲道理

    大家讲道理2017-04-17 15:46:11

    如果循环很多,可以手动加上释放池:

      @autoreleasepool {
          your code    
       }

    例如你的代码改为:

    - (void)viewDidLoad {
        [super viewDidLoad];
    
        staitc int EVERBUFFERLEN = 2000;
        NSData *data = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"wakeup.pcm" ofType:nil]];
        NSMutableData *mData = [NSMutableData dataWithData:data];
    
        int readLength = 0;
        while (readLength < mData.length) {
            if (mData.length - readLength > EVERBUFFERLEN) {
                @autoreleasepool {
                  NSData *data = [mData subdataWithRange:NSMakeRange(readLength, EVERBUFFERLEN)];
                  readLength += EVERBUFFERLEN;
                  [NSThread sleepForTimeInterval:0.01];
                  data = nil;
               } 
            }
        }

    为工程师推荐兼职,详情点我头像

    balas
    0
  • Batalbalas