Ios 为什么disptach_async()可以减少这种内存泄漏?
我使用这个工具来检测内存泄漏,发现了5个泄漏,它们都连接到我的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]
解析器
类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()中?当然,是的。