0

我有一个奇怪的问题,当执行一种方法时,导航堆栈中的视图控制器丢失了。在下面的代码中,我将视图控制器计数记录在导航堆栈中。我还在导航堆栈中记录视图控制器。

NSMutableArray *navigationarray = [[NSMutableArray alloc]initWithArray:self.navigationController.viewControllers];
NSLog(@"Navigation array %@", navigationarray);
NSLog(@"Navigation array count %d", [navigationarray count]);

[self.doneButton.target performSelector:self.doneButton.action withObject:self.doneButton.target];

NSMutableArray *navigationarrayOne = [[NSMutableArray alloc]initWithArray:self.navigationController.viewControllers];
NSLog(@"Navigation array %@", navigationarrayOne);
NSLog(@"Navigation array count %d", [navigationarrayOne count]);

在调用该方法之前,导航堆栈有 3 个视图控制器。但是方法执行后,导航栈中就没有viewcontroller了。我在 3 个视图控制器的 dealloc 方法中放了一个断点,发现视图控制器没有被释放。这可能是什么原因?

当前类的子类ABNewPersonViewController..并self.doneButton.action执行

- (void)newPersonViewController:(ABNewPersonViewController *)newPersonViewController
   didCompleteWithNewPerson:(ABRecordRef)person;

子类的类中的方法ABPersonViewController

4

1 回答 1

1

navigationController 由该堆栈中的所有视图共享。它们中的任何一个都可以设置navigationController.viewControllers 的值。查看您的新视图控制器是否正在对导航堆栈进行更改。

于 2012-06-08T16:03:45.297 回答