ฉันมีตัวควบคุมมุมมองที่เป็นคลาสย่อยของ UIViewController ซึ่งมีมุมมองตารางอยู่และแต่ละแถวในมุมมองตารางเชื่อมโยงกับ URL xml ที่แตกต่างกัน ฉันสร้างคลาส parser ที่เป็นคลาสย่อยของ NSOperation และใช้วิธีการเพื่อแยกวิเคราะห์ไฟล์ XML ในการเลือกแต่ละแถวเป็น
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[tableView deselectRowAtIndexPath:indexPath animated:YES];
[self performSelectorOnMainThread:@selector(pushView) withObject:nil waitUntilDone:NO];
[self performSelectorInBackground:@selector(parseOperation:) withObject:indexPath];
}
- (void)pushView {
detailView = [[viewDetailsController alloc] initWithNibName:@"viewDetailsController" bundle:nil];
[self.navigationController pushViewController:detailView animated:YES];
}
- (void)parseOperation:(NSIndexPath *)indexPath {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
self.queue = [[NSOperationQueue alloc] init];
parserClass *parser = [[parserClass alloc] initWithParseUrl:[[self.arrayOfUrls objectAtIndex:indexPath.row]delegate:self];
[queue addOperation:parser];
[parser release];
[pool release];
}
Parser ใช้งานได้ดี แต่ในวิธีการมอบหมายแบบกำหนดเอง ฉันได้เรียกให้กดตัวควบคุมมุมมองที่ด้านบนของสแต็กตัวควบคุมการนำทาง ตัวควบคุมมุมมองเริ่มต้นอย่างถูกต้อง แต่ตัวควบคุมมุมมองใหม่ไม่ได้ถูกผลักเข้าไปในหน้าจอ
ฉันได้แก้ไขคำถามสำหรับการใช้เธรดหลักและเธรดพื้นหลังในขณะที่เธรดพื้นหลังทำงานอย่างถูกต้องสำหรับการแยกวิเคราะห์เธรดหลักเพิ่งเริ่มต้นและไม่ผลักดันตัวควบคุมมุมมอง อะไรคือปัญหา ?