iOS ARC 内存一直不停的增加
ringa_lee
ringa_lee 2017-04-17 15:44:11
0
4
609
ringa_lee
ringa_lee

ringa_lee

全部回覆(4)
Ty80

NSThread執行緒​​中不要使用NSData的subdataWithRange方法

轉來的,你可以看看

Peter_Zhu

程式碼沒給全吧,也沒看出來對data做了啥操作啊。另外,在主執行緒呼叫sleepForTimeInterval會卡住UI執行緒的。

PHPzhong

樓主確定這這些代碼所造成的記憶體成長嗎?如果確定,可以在這個函數入口加個斷點,然後一步一步的調試,看看走完哪一行程式碼後記憶體有的成長

大家讲道理

如果循環很多,可以手動加上釋放池:

  @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;
           } 
        }
    }

推薦我兼職工程師,詳情點我頭像

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板