该应用程序为每个用户使用相同的配置文件视图控制器,只需调整不同用户数据的数据源。在用户配置文件上,如果当前用户关注某人,我正在尝试更新当前用户配置文件控制器上的UILabel以反映此更改。
我最初尝试使用这样的通知:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(userDataChanged) name:@"USER_DATA_UPDATED" object:nil];
但userDataChanged函数仅在视图控制器的当前实例上调用,而不是在导航堆栈中调用的实例。
答案 0 :(得分:0)
除非对某个其他实时对象中的视图控制器有强引用,否则如果当前不可见,则可以随时取消分配视图控制器。显然,死实例无法接收通知,也不会调用更新方法。
如果您还没有这样做,您可能希望在视图控制器加载后从磁盘加载最新的用户数据,从核心数据中获取它或将这些数据保存在某个中央存储对象中以便于访问。在最简单的情况下,仅从userDataChanged
或viewDidLoad
内拨打viewWillAppear
就足够了。
当然,通知完全可以使当前可见的视图控制器知道数据已被更改,但您不应该依赖它作为加载数据的唯一触发器。