ios - 从 ActivityViewController 的某些共享插件返回时应用程序崩溃

标签 ios swift

我有一个带有静态表的TableViewController;其中一个单元格包含一个名为 graphArea 的 UIView。该 View 渲染一个图表、它的背景和一条轴线——所有这些都在它的drawRect()内部。还有另外两个 View (sunView 和markerView),它们是使用Interface Builder 制作的,用于图表动态(移动标记线和触摸事件上的点)。

一切都工作得非常顺利,直到我实现并尝试测试一个采用普通 ActivityViewController 机制的共享按钮。 当几个共享事件中的一个(其共享插件窗口占据全屏)完成时(无论共享成功还是取消),奇迹就开始了。应用程序崩溃。

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

只有一些全屏共享插件(例如预装的邮件和消息,或者就我而言,“下载到 DropBox”操作)会导致应用程序崩溃。其他全屏共享插件没有(经过测试的 Telegram、WhatsApp、Skype)。这些非全屏插件中没有一个曾导致崩溃(Evernote、Twitter、2Do 等)。

当“恶意”共享插件全屏显示时,graphArea、sunView、markerView 似乎从内存中释放。我还没弄清楚为什么。

这是一些调试信息:

fatalErrorMessage 的回溯和汇编。 Traceback and asm code

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

请帮帮我!预先感谢您!

最佳答案

谢谢你,帕尔帕蒂姆。我的 friend 也向我指出了同样的事情:我将 graphArea.removeFromSuperview() 放在 viewDidDisappear() 中,这导致了共享插件后的异常,该插件具有 .presentationStyle = 全屏。所以此时,当应用程序再次显示时,tableView 上不再有 graphArea

关于ios - 从 ActivityViewController 的某些共享插件返回时应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36508373/

相关文章:

swift - 为什么文本不显示在 UItableview 对象上

ios - 如何将 Firebase 快照中的变量分配给子节点中的值?

ios - ?? Swift 中的运算符

iphone - 在iPhone应用程序中实现HMAC加密算法

ios - 如何在 Swift 中将 cornerRadius 添加到 AVPlayerViewController?

ios - 如何用一个字符替换字符串中的所有数字

swift - 为什么我的收藏 View 单元格颜色选择不起作用

ios - Flutter:未处理的异常:MissingPluginException(未在 channel plugins.flutter.io/shared_preferences 上找到方法 getAll 的实现)

ios - 如何将核心数据与多个 View Controller 和自定义类一起使用?

swift - Swift 中的前置自增和后置自增运算符