我有一个使用外围滑入/滑出右手视图控制器的地图应用程序,就像下面显示的谷歌地图应用程序(来源):
在我的应用程序中,这个滑出视图有一个weak
delegate
属性,我将地图视图控制器设置为委托(例如mapOptionsViewController.delegate = self
从内部myMapViewController
)。不过,我也希望在视图中使用右侧幻灯片来获取其他类型的信息。例如,显示用户在地图上选择的餐厅的菜单menuViewController
。
我的问题是,如果我换成mapOptionsViewController
,menuViewController
我还需要手动换nil
出mapOptionsViewController.delegate
frommyMapViewController
吗?我担心的是,即使mapOptionsViewController
在我切换到时被释放/处理menuViewController
,因为myMapViewController
仍然指向旧的mapOptionsViewController.delegate
,mapOptionsViewController.delegate
的内存不会从堆中释放。
所以基本上,如果你有一个对象视图控制器foo
(我的地图),它是另一个视图控制器bar
(地图选项)的代表bar.delegate = foo
,然后你切换到bar
(baz
餐厅菜单),我需要bar.delegate = nil
从foo
. 或者,bar
当delegate
视图控制器delegate
包含在由于被替换为baz
?