【发布时间】:2016-04-15 07:59:27
【问题描述】:
我正在尝试找到通知视图控制器它应该根据另一个视图控制器的操作从服务器获取数据的正确方法。
例如 - 呈现推文列表的视图控制器,以及允许用户创建推文的视图控制器。用户创建推文后,负责创建推文的视图控制器将被关闭,而负责呈现推文的视图控制器现在应该知道它应该从服务器重新加载它的数据,以便向用户展示他刚刚创建的推文。
一开始我以为NSNotificationCenter是要走的路,但做了一点研究(主要是this twitter discussion),发现建议在视图的viewDidDisappear方法中去掉通知观察者控制器,在上面描述的场景中,使通知无用,因为 呈现 视图控制器在它应该收到通知的时候已经从通知的观察者中移除了自己(因为它被隐藏了'create tweet' 视图控制器,从而导致它的 viewDidDisappear 方法被调用)。
这里的委托也是一个问题,因为可能还有其他视图控制器也可能需要知道何时创建了新推文,以便更新他们的视图/从服务器获取数据等。
由于所描述的流程非常流行,我认为必须有一个正确的方式让这两个视图控制器以一种有意义的方式进行通信。
有什么想法吗?
【问题讨论】:
-
你可以在dealloc方法中移除观察者
-
会不会是NSNotificationCenter的错误使用?有没有可能出现的潜在问题?
-
除非业务逻辑,否则我认为没有任何犯罪行为。
-
您可以使用 KVO、通知或委托;为方便起见,您可以在两者之间进行选择。
标签: ios objective-c xcode swift cocoa-touch