При повторном отображении контроллера popover (после его закрытия и повторного отображения) я получаю следующую ошибку:
Завершение работы приложения из-за необработанного исключения «NSGenericException», причина: «- [UIPopoverController dealloc] достигнут, пока всплывающее окно все еще видно. '
Трассировка стека - это всего лишь гексагон, и SIGABRT каждый раз происходит в UIApplicationMain. Вот код, который вызывает кнопка:
- (IBAction)createNewScore:(id)sender {
if (self.pc)
if (self.pc.popoverVisible)
return;
else
// Breakpoint is hit here—crashes after this line
[self.pc presentPopoverFromBarButtonItem:(UIBarButtonItem *)sender permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
NGDocumentInfoViewController *documentInfoVC = [[NGDocumentInfoViewController alloc] initWithBlankDocumentTargetInManagedObjectContext:self.context];
UINavigationController *navc = [[UINavigationController alloc] initWithRootViewController:documentInfoVC];
UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(doneCreatingNewScore:)];
UIBarButtonItem *cancelButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(cancelCreatingNewScore:)];
navc.navigationBar.topItem.leftBarButtonItem = doneButton;
navc.navigationBar.topItem.rightBarButtonItem = cancelButton;
CGSize popoverSize = CGSizeMake(documentInfoVC.view.bounds.size.width, documentInfoVC.view.bounds.size.height);
documentInfoVC.contentSizeForViewInPopover = popoverSize;
UIPopoverController *popover = [[UIPopoverController alloc] initWithContentViewController:navc];
popover.delegate = self;
self.pc = popover;
[popover presentPopoverFromBarButtonItem:(UIBarButtonItem *)sender permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
}
Я бы хотел оставить поповер, который бы исправил проблему, но это среда ARC, поэтому у меня нет сохранения. Есть ли способ исправить ошибку (не отключая ARC для файла и не делая вручную память для всего файла)?
Редактировать: Всплывающее окно сохраняется в виде ивара:
@property (strong) UIPopoverController *pc;
<ч />
У кого-нибудь есть решение этой проблемы (возможно, переопределение ARC)? Я подам заявку на БР, как предлагает CodaFi, но решение все равно будет хорошим, так как это препятствие в крупном проекте. Если это невозможно, то, я полагаю, я сам сделаю это.