如果活动可能正在进行中,如何安全地退出视图?

时间:2011-02-01 20:21:50

标签: iphone objective-c uinavigationcontroller

我有一个视图从另一个UITableView推送到UINavigationController堆栈。我的视图加载到任何缓存的内容中,然后继续连接到服务器以检查更新的内容。

问题是,用户可能会点击UINavigationBar中的“后退”箭头按钮,当代理被回击时,应用程序崩溃。我认为有两种方法可以解决这个问题:

  • 取消+将任何代表设置为nil
  • 删除后退按钮,直到活动完成/失败(可能很烦人)

不幸的是,当我将RKObjectLoader委托设置为nil时,我正在使用的框架(RestKit)似乎仍然崩溃。

关于此的任何线索或最佳做法?

1 个答案:

答案 0 :(得分:1)

还有第三个选项 - 将视图移出屏幕但不释放它 - 操作将成功,然后您可以释放内存。

选项1是正确的方法 - 你不想无缘无故地做事。您是否尝试拦截后退按钮并保留视图。取消操作但不将委托设置为nil。您应该从restKit向您的委托发回某种错误消息 - 当您得到这个消息时,您可以释放自己。同时,视图已被UIKit从屏幕上删除,因此用户不知道这种情况正在发生。

如果所有不能正常工作,选项2都会起作用(但会很糟糕)。


你可以发布崩溃的堆栈跟踪 - 也许我们可以修复RestKit?