我有一个使用 dispatch_async 的函数:
- (IBAction)action:(id)sender {
int i=10000;
NSString * data;
dispatch_queue_t queue = dispatch_queue_create("com.wang.queue", NULL);
__weak ViewController* weakSelf = self;
while(i>0)
{
@autoreleasepool {
data = [[NSString alloc]initWithFormat:@"%i",i];
NSString * str = data;
dispatch_async(queue, ^{{
[weakSelf print:str];
}});
i--;
}
}
}
-(void) print:(NSString*)str
{
NSLog(@"%@",str);
str = nil;
}
然后我连续按下按钮五次。完全运行后,内存并没有减少。所以我使用 Instrument 来分析内存被占用的地方。像这样:</p>
这表明“数据”的内存被释放了。占用内存的是“VM:性能工具数据”。细节是:
我认为有关“dispatch_async”的某些内容从未被释放。
谁能告诉我是什么让记忆如此表现?欣赏 !