概述
- 我有一个使用核心数据的 iOS 项目
- 核心数据被视图控制器和通知使用
执行
- 为名为的数据库活动创建了一个单例类
DatabaseEngine
- 在 appDelegate
didFinishLaunchingWithOptions
中,DatabaseEngine
被实例化 DatabaseEngine
包含视图控制器和通知的属性(委托)- 在
viewDidLoad
视图控制器中,我将DatabaseEngine
委托设置为视图控制器实例 - 打开数据库后,完成处理程序(通过委托属性)调用方法来设置视图控制器和通知
关注(时间问题)
- 我担心可能存在这样的场景(时间问题),其中
DatabaseEngine
首先创建了视图控制器,此时viewDidLoad
不会执行视图控制器,因此DatabaseEngine
不会初始化委托,因此数据库将执行完成处理程序,但由于委托是无,不会完成任何任务
我做了什么来解决这个问题
- 在视图控制器的 viewDidLoad 中,我正在检查数据库是否已启动以及是否未加载视图控制器,如果是,则我再次执行任务(设置视图控制器的视图)。
注意-我没有明确使用线程,但根据我的理解,completionHandler 是异步执行的。
问题
- 试了几次,视图控制器数据加载正确,似乎没有计时问题。我什至尝试循环遍历一个大值(以产生延迟),但仍然没有时间问题。我想知道为什么 ?
- 我的实现是一个好的设计还是有更好的方法来做到这一点?
- 这是解决我的担忧的正确方法吗?