【发布时间】:2012-03-10 15:09:11
【问题描述】:
场景:
- 以 UINavigationController 作为初始控制器的故事板。
- MainVC(导航控制器的根 vc)需要用户在地图上选择一个位置。
- MainVC 推送一个包含 MapKit 地图的 VC,并将其自身添加为用户选择位置时 MapVC 发出的通知的侦听器。
- MapKit 是一个内存猪,我们都知道。 iOS 给我一个内存警告,我做了所有需要做的事情,然后 iOS 释放它可以释放的所有东西,包括 MainVC。
- MapVC 发出通知,但没有人收听。用户选择的位置丢失了,就像雨中的泪水一样。
鉴于此,在返回 MainVC 时传递该位置数据的可靠方法是什么?我什至想把它写到 ~/tmp (这是我在处理像图像这样的大量数据时用来做的事情),但这似乎是在浪费机器。没有我可以挂钩的机制,比如导航控制器返回到前一个 VC 时触发的事件?就像,可以访问类似 prepareForSegue: 但在相反的方向会很好。
编辑我尝试过委托,但我的委托似乎仍然被释放。我是否坚持必须写入 ~/tmp?
【问题讨论】:
-
委托是要走的路 - 听起来您的委托对象被解除分配有问题?
-
我只能补充一点,如果我在 MainVC(现在是 MapVC.delegate)中注释掉 [super didReceiveMemoryWarning],它不会被释放。不过,我认为这属于不良行为。
标签: memory ios5 mapkit storyboard segue