1 つのメソッドを実行すると、ナビゲーション スタック内のビュー コントローラーが失われるという奇妙な問題が発生しています。次のコードでは、viewcontroller の数をナビゲーション スタックに記録します。ビューコントローラーもナビゲーションスタックに記録しています。
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 つのビュー コントローラーがあります。ただし、メソッドが実行された後は、ナビゲーション スタックにビュー コントローラーはありません。3 つのビュー コントローラーの dealloc メソッドにブレークポイントを設定したところ、ビュー コントローラーが割り当て解除されていないことがわかりました。この理由は何でしょうか?
現在のクラスはサブクラスABNewPersonViewController
化され、self.doneButton.action
実行されます
- (void)newPersonViewController:(ABNewPersonViewController *)newPersonViewController
didCompleteWithNewPerson:(ABRecordRef)person;
サブクラス化されたクラスのメソッドABPersonViewController