应用程序从activityViewController

时间:2016-04-08 20:02:13

标签: ios swift

我有一个带静态表的TableViewController;其中一个单元格中有一个名为graphArea的UIView。视图呈现图表,它的背景和轴线 - 所有这些都在drawRect()中。还有另外两个视图(sunView& markerView),它们由Interface Builder制作并用于图表动态(移动标记线和触摸事件点)。

所有工作都很顺利,直到我实现并尝试测试一个使用普通activityViewController机制的共享按钮。 魔术开始,当共享插件窗口占全屏时,来自几个共享活动的一个活动完成(无论共享是成功还是取消)。该应用程序崩溃。

发现使用调试器对我来说很明显,崩溃发生了,因为从共享屏幕返回后,包括graphArea,sunView,markerView在内的一些视图为nil。

只有部分全屏共享插件(如预装的邮件和消息,或者在我的情况下,“下载到DropBox”操作)导致应用程序崩溃。其他全屏共享插件没有(测试Telegram,WhatsApp,Skype)。没有任何一个非全屏插件曾经导致崩溃(Evernote,Twitter,2Do等)。

当“恶意”共享插件全屏显示时,看起来像graphArea,sunView,markerView从内存中释放。我还没弄明白,为什么。

这是一些调试信息:

fatalErrorMessage的追溯和程序集。 Traceback and asm code

下一个屏幕截图显示了控制器代码和属性的一部分,从共享插件(灰色选择)返回时为零。是的,之前他们都是非零的。 Part of controller code and its state on crash

请帮帮我!提前谢谢!

1 个答案:

答案 0 :(得分:0)

谢谢Palpatim。我的朋友也指出了同样的事情:我已将graphArea.removeFromSuperview()放在viewDidDisappear()中,这导致了共享插件之后的例外.presentationStyle = fullScreen。因此,当应用程序再次显示时,tableView上不再有graphArea