- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
这是一个相当概念性的问题,所以如果您需要更多详细信息,请告诉我。
对于高级摘要,我有一组 View Controller :
HomeViewController
- 这是应用程序中的第一个 VC,并显示数据列表。
ListViewController
- 由 HomeViewController
呈现,显示了 HomeViewController 中描述的相同数据列表,但呈现方式略有不同。
AddViewController
- 由 ListViewController
提供,添加显示在列表中的项目。
当用户在 AddViewController
中完成添加项目时,我将其编码为弹出 AddViewController
,并在 上使用
重新加载 viewDidAppear
>ListViewControllerListViewController
上的列表以反射(reflect)新项目。
现在,问题 - 弹出 ListViewController
会返回到 HomeViewController
,我也想对其进行更新。现在 - 我可以再次使用 viewDidAppear
但是,为了不杀死服务器,我希望有一些系统说“只在需要时更新”。
显而易见的解决方案是为每个 View 设置一个单例状态管理系统。保存一些“hasUpdated” View 的字典并传递一个 View ID(可能是 VC 的散列),这将说明是否轮询服务器或缓存。
我已经使用 iOS 一段时间了,我知道单例被认为是一种反模式。
另一种解决方案是在每个 View Controller 上携带某种“isDirty”状态,并在需要时拦截弹出操作以调用闭包……这看起来太冗长了!全局状态管理系统更易于理解和阅读,但存在很多问题。
这看起来是一件很简单的事情 - 我想我以前没有见过这个问题,因为我只真正处理单向应用程序(即应用程序下载和显示数据,而不是用户更改数据) .
有什么想法吗?
最佳答案
有不同的方法来实现它。它还取决于您如何将数据保存在本地缓存中。
例如,如果您使用 Core Data,您可以观察特定类型实体的任何变化,并对相应的 Cell Row 执行重新加载,添加/删除 Cell Row 等。
如果数据更简单,可能保存在一个数组中——我会创建一个 StateController 对象,它将包含 Array 属性并对其执行操作。您可以使用 Closures 或 Delegate Protocol 方法与任何连接到它的 View Controller 进行通信。
关于ios - 管理全局状态(没有单例),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53684070/
我最近购买了《C 编程语言》并尝试了 Ex 1-8这是代码 #include #include #include /* * */ int main() { int nl,nt,nb;
早上好!我有一个变量“var”,可能为 0。我检查该变量是否为空,如果不是,我将该变量保存在 php session 中,然后调用另一个页面。在这个新页面中,我检查我创建的 session 是否为空,
我正在努力完成 Learn Python the Hard Way ex.25,但我无法理解某些事情。这是脚本: def break_words(stuff): """this functio
我是一名优秀的程序员,十分优秀!