我使用Instrument来检测内存泄漏,发现5个泄漏,它们都附加到我的Parser
类。 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]
放入dispatch_get_main_queue()
吗?