我已经在应用程序上工作了几个月而没有任何问题。突然间今天的流行音乐已经下地狱。
我尝试了几种不同的方法,无论何时通过按下弹出窗口中的按钮解除弹出窗口,或者在弹出窗口外部点击应用程序崩溃。
使用乐器,我可以看到只有在弹出窗口被解除后才会出现僵尸参考:
*** -[UITransitionView willRemoveSubview:]: message sent to deallocated instance 0x7f9985bcd980
所以我已经记录了那个堆栈并没有多少帮助,因为整个堆栈与UIKit和内置动画等有关。
使用标准UIPopovers
self.popover = [[UIPopoverController alloc] initWithContentViewController:self.navVC];
self.popover.backgroundColor = [UIColor accentColor];
self.popover.delegate =self;
[self.seatingChartPopover presentPopoverFromRect:CGRectMake(x,y, 1, 1)
inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
或者在ios8中使用新的UIPopoverPresentationController方法
self.navVC.modalPresentationStyle = UIModalPresentationPopover;
UIPopoverPresentationController* popover = self.navVC.popoverPresentationController;
self.navVC.preferredContentSize = [self.childVC preferredContentSize];
popover.sourceView = self.view;
popover.sourceRect = CGRectMake(x,y, 1, 1);
popover.permittedArrowDirections = UIPopoverArrowDirectionAny;
[self presentViewController:self.seatingChartNavController animated:YES completion:nil];
我已确保所涉及的所有视图控制器都具有强大的参考。
正如我所提到的,我没有在几个月内更改显示此弹出窗口的代码,直到今天它仍然正常工作。我花了几个小时调试这个无济于事。
此外,如果我只将self.navVC作为普通模态视图呈现,则视图显示正常并且可以解除罚款。只有当它被设置为弹出窗口时才会失败
提前感谢您的帮助。
答案 0 :(得分:1)
我很惭愧地承认我不小心在我的一个UIView类别中放了一个dealloc方法。
我很惊讶这没有提出任何类型的编译器警告,但在删除后没有任何更奇怪的崩溃。