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

Ios 为什么disptach_async()可以减少这种内存泄漏?,ios,memory-leaks,Ios,Memory Leaks,我使用这个工具来检测内存泄漏,发现了5个泄漏,它们都连接到我的解析器类Parser是一个处理xpath解析的类(这是一个非常非常的东西),我将startParse放在fetchDataFromServer方法的viewDidLoad方法中,它会阻塞UI。它还导致内存泄漏 这将导致: if (isExisted) { NSLog(@"IS EXISTED"); Parser *parser = [[Parser alloc] initWithPath:self.filePath]

我使用这个工具来检测内存泄漏,发现了5个泄漏,它们都连接到我的
解析器
Parser
是一个处理xpath解析的类(这是一个非常非常的东西),我将
startParse
放在
fetchDataFromServer
方法的
viewDidLoad
方法中,它会阻塞UI。它还导致内存泄漏

这将导致:

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]
放入
调度\u get\u main\u队列()

我认为问题在于“self.objects”。如果要在dispatch_async中使用任何类实例,则需要首先创建该对象的弱引用,然后使用它。>另一点:我是否应该将[self.tableView reloadData]放入dispatch_get_main_queue()中?当然,是的。