Вы удалили переменную экземпляра UIViewController *presentingViewController
, когда добавили переменную экземпляра UIViewController *_presentingViewController
? Если бы не я, я бы случайно положил на тебя деньги, когда в какой-то момент использовал неправильный.
Пошагово ... изначально у вас была переменная экземпляра
UIViewController *presentingViewController;
А из свойства синтаксического сахара у вас есть два метода доступа для установки и получения переменной
- (UIViewController *)presentingViewController;
- (void)setPresentingViewController:(UIViewController *)val;
в какой-то момент кода, внутри блока, он делает:
[self setPresentingViewController: viewController]; // uses setter
, а затем
[presentingViewController dismissModalViewControllerAnimated:NO]; // uses instance variable
это хорошо, но вы думаете, что это должно быть
UIViewController *localPresentingViewController = [self presentingViewController]; // uses getter
[localPresentingViewController dismissModalViewControllerAnimated:NO];
что тоже хорошо, но несколько ненужно.
Затем вы добавили новую переменную экземпляра: -
@synthesize presentingViewController = _presentingViewController;
так что теперь у вас есть
UIViewController *presentingViewController;
UIViewController *_presentingViewController;
// These now get / set _presentingViewController
- (UIViewController *)presentingViewController;
- (void)setPresentingViewController:(UIViewController *)val;
Но почти наверняка где-то вы путаете два ивара (или вы не знаете, что у вас есть два ивара), представляющих ViewController / _presentingViewController, и по-прежнему имеете ссылку на представительный ivarViewController, что заставляет вас думать, что ваше свойство равно нулю. *