为什么disptach_async()可以减少这种内存泄漏?

时间:2015-03-07 02:41:05

标签: ios memory-leaks

我使用Instrument来检测内存泄漏,发现5个泄漏,它们都附加到我的Parser类。 Parser是一个处理xpath解析的类(这是一个非常严重的东西),我将startParse放在fetchDataFromServer方法viewDidLoad内方法,它阻止UI。它还导致内存泄漏。

enter image description here 这将泄漏:

if (isExisted) {
    NSLog(@"IS EXISTED");
    Parser *parser = [[Parser alloc] initWithPath:self.filePath];
    [parser startParse];   
    if (parser.returnArray) {
        self.objects = parser.returnArray;
        NSLog(@"self.objcet : %@", self.objects);
        /// CoreData
        //[weakSelf saveData];

        //[weakSelf fetchDataFromCoreData];
        [self.tableView reloadData];
    }
});

这不会泄漏:

if (isExisted) {
    NSLog(@"IS EXISTED");
    Parser *parser = [[Parser alloc] initWithPath:self.filePath];
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        [parser startParse];
        if (parser.returnArray) {
            self.objects = parser.returnArray;
            NSLog(@"self.objcet : %@", self.objects);
            /// CoreData
            //[weakSelf saveData];

            //[weakSelf fetchDataFromCoreData];
            [self.tableView reloadData];
        }

    });
}

另一点:我应该将[self.tableView reloadData]放入dispatch_get_main_queue()吗?

0 个答案:

没有答案