我有一个带静态表的TableViewController;其中一个单元格中有一个名为graphArea的UIView。视图呈现图表,它的背景和轴线 - 所有这些都在drawRect()中。还有另外两个视图(sunView& markerView),它们由Interface Builder制作并用于图表动态(移动标记线和触摸事件点)。
所有工作都很顺利,直到我实现并尝试测试一个使用普通activityViewController机制的共享按钮。 魔术开始,当共享插件窗口占全屏时,来自几个共享活动的一个活动完成(无论共享是成功还是取消)。该应用程序崩溃。
发现使用调试器对我来说很明显,崩溃发生了,因为从共享屏幕返回后,包括graphArea,sunView,markerView在内的一些视图为nil。
只有部分全屏共享插件(如预装的邮件和消息,或者在我的情况下,“下载到DropBox”操作)导致应用程序崩溃。其他全屏共享插件没有(测试Telegram,WhatsApp,Skype)。没有任何一个非全屏插件曾经导致崩溃(Evernote,Twitter,2Do等)。
当“恶意”共享插件全屏显示时,看起来像graphArea,sunView,markerView从内存中释放。我还没弄明白,为什么。
这是一些调试信息:
下一个屏幕截图显示了控制器代码和属性的一部分,从共享插件(灰色选择)返回时为零。是的,之前他们都是非零的。
请帮帮我!提前谢谢!
答案 0 :(得分:0)
谢谢Palpatim。我的朋友也指出了同样的事情:我已将graphArea.removeFromSuperview()
放在viewDidDisappear()
中,这导致了共享插件之后的例外.presentationStyle = fullScreen
。因此,当应用程序再次显示时,tableView上不再有graphArea
。