【发布时间】:2016-09-30 23:37:55
【问题描述】:
当视图控制器调用 viewWillDisappear 时,我应该将委托设置为 nil 吗?当然,在调用 viewWillAppear 时再次设置委托。
当视图控制器未激活但委托仍设置为向视图控制器发送消息时,委托及其调用会发生什么情况?
【问题讨论】:
标签: ios uiviewcontroller delegates
当视图控制器调用 viewWillDisappear 时,我应该将委托设置为 nil 吗?当然,在调用 viewWillAppear 时再次设置委托。
当视图控制器未激活但委托仍设置为向视图控制器发送消息时,委托及其调用会发生什么情况?
【问题讨论】:
标签: ios uiviewcontroller delegates
真的取决于您的用例。如果您希望视图控制器在不在屏幕上时忽略委托回调,那么请确保您可以在 viewWillDisappear 中取消委托。但是,我发现这在某些情况下很危险。考虑一下,UITableView 数据源。如果您在 viewWillDisappear 中将 dataSource 设为 nil,那么由于某种原因您尝试 reloadData 当视图不在视图中时,表格视图将无法正确重新加载。
我通常喜欢只在dealloc 中取零。
【讨论】: